Merge "Build searchables list after boot" into froyo
diff --git a/core/java/android/server/search/SearchManagerService.java b/core/java/android/server/search/SearchManagerService.java
index caa3144..3826a01 100644
--- a/core/java/android/server/search/SearchManagerService.java
+++ b/core/java/android/server/search/SearchManagerService.java
@@ -21,9 +21,12 @@
 import android.app.ISearchManager;
 import android.app.SearchManager;
 import android.app.SearchableInfo;
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Process;
 import android.util.Log;
 
 import java.util.List;
@@ -51,18 +54,38 @@
      */
     public SearchManagerService(Context context)  {
         mContext = context;
+        mContext.registerReceiver(new BootCompletedReceiver(),
+                new IntentFilter(Intent.ACTION_BOOT_COMPLETED));
     }
 
     private synchronized Searchables getSearchables() {
         if (mSearchables == null) {
+            Log.i(TAG, "Building list of searchable activities");
+            new MyPackageMonitor().register(mContext, true);
             mSearchables = new Searchables(mContext);
             mSearchables.buildSearchableList();
-            new MyPackageMonitor().register(mContext, true);
         }
         return mSearchables;
     }
 
     /**
+     * Creates the initial searchables list after boot.
+     */
+    private final class BootCompletedReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            new Thread() {
+                @Override
+                public void run() {
+                    Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
+                    mContext.unregisterReceiver(BootCompletedReceiver.this);
+                    getSearchables();
+                }
+            }.start();
+        }
+    }
+
+    /**
      * Refreshes the "searchables" list when packages are added/removed.
      */
     class MyPackageMonitor extends PackageMonitor {