summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorBjorn Bringert <bringert@android.com>2010-05-04 20:44:16 +0100
committerBjorn Bringert <bringert@android.com>2010-05-04 23:49:24 +0100
commit2c7b197a4ab1aff671a6fa2e6db540d391f553e6 (patch)
treedec6eb52f3e7323908d0bfd8af6bfb7f7951c426 /core
parent3bb5e4d322a6a7cda45e868dbe307c2dc3cf688e (diff)
downloadframeworks_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.java25
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 {