OSDN Git Service

Fix pref availability for search
authorJason Monk <jmonk@google.com>
Fri, 27 May 2016 16:58:53 +0000 (12:58 -0400)
committerJason Monk <jmonk@google.com>
Fri, 27 May 2016 16:58:53 +0000 (12:58 -0400)
Change-Id: Ic080e131c6c751456b22d370aade77748d912b6b
Fixes: 28987828

src/com/android/settings/Utils.java

index 4eaad7d..ebc0b1c 100644 (file)
@@ -53,6 +53,7 @@ import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IBinder;
 import android.os.INetworkManagementService;
+import android.os.Looper;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
@@ -1067,18 +1068,15 @@ public final class Utils extends com.android.settingslib.Utils {
     }
 
     public static List<String> getNonIndexable(int xml, Context context) {
-        HandlerThread thread = new HandlerThread("Index_" + xml);
-        thread.start();
+        if (Looper.myLooper() == null) {
+            // Hack to make sure Preferences can initialize.  Prefs expect a looper, but
+            // don't actually use it for the basic stuff here.
+            Looper.prepare();
+        }
         final List<String> ret = new ArrayList<>();
-        new Handler(thread.getLooper()).post(new Runnable() {
-            @Override
-            public void run() {
-                PreferenceManager manager = new PreferenceManager(context);
-                PreferenceScreen screen = manager.inflateFromResource(context, xml, null);
-                checkPrefs(screen, ret);
-            }
-        });
-        thread.quitSafely();
+        PreferenceManager manager = new PreferenceManager(context);
+        PreferenceScreen screen = manager.inflateFromResource(context, xml, null);
+        checkPrefs(screen, ret);
 
         return ret;
     }