diff options
author | Bjorn Bringert <bringert@android.com> | 2010-05-04 20:44:16 +0100 |
---|---|---|
committer | Bjorn Bringert <bringert@android.com> | 2010-05-04 23:49:24 +0100 |
commit | 2c7b197a4ab1aff671a6fa2e6db540d391f553e6 (patch) | |
tree | dec6eb52f3e7323908d0bfd8af6bfb7f7951c426 /core | |
parent | 3bb5e4d322a6a7cda45e868dbe307c2dc3cf688e (diff) | |
download | frameworks_base-2c7b197a4ab1aff671a6fa2e6db540d391f553e6.zip frameworks_base-2c7b197a4ab1aff671a6fa2e6db540d391f553e6.tar.gz frameworks_base-2c7b197a4ab1aff671a6fa2e6db540d391f553e6.tar.bz2 |
Build searchables list after boot
This avoids delaying the first launch of QuickSearchBox or Browser
after boot while SearchManagerService builds the searchables list.
Bug http://b/issue?id=2639863
Change-Id: Ia510204691ecf487a2008723fe8f6caaced86618
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/server/search/SearchManagerService.java | 25 |
1 files changed, 24 insertions, 1 deletions
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 com.android.internal.content.PackageMonitor; 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 class SearchManagerService extends ISearchManager.Stub { */ 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 { |