diff options
author | Danny Baumann <dannybaumann@web.de> | 2015-02-11 11:31:32 +0100 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2015-10-29 17:36:29 -0700 |
commit | cf72f6d3554bcf937b0fe05d3728fad34a34b877 (patch) | |
tree | ec2ab3722582935cdc50953056674c83e3084b54 /src/com/android/settings/search | |
parent | 853513841512a0fbf15dc22c7164a98d0a2de80b (diff) | |
download | packages_apps_Settings-cf72f6d3554bcf937b0fe05d3728fad34a34b877.zip packages_apps_Settings-cf72f6d3554bcf937b0fe05d3728fad34a34b877.tar.gz packages_apps_Settings-cf72f6d3554bcf937b0fe05d3728fad34a34b877.tar.bz2 |
Only access CMHW from main thread.
Some CMHW classes might expect that they're created in the main thread,
e.g. if they want to use Handlers.
Change-Id: I319709a423547368b3c4f047c2efbfab4c191953
Diffstat (limited to 'src/com/android/settings/search')
-rw-r--r-- | src/com/android/settings/search/BaseSearchIndexProvider.java | 4 | ||||
-rw-r--r-- | src/com/android/settings/search/Index.java | 12 | ||||
-rw-r--r-- | src/com/android/settings/search/Indexable.java | 5 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/com/android/settings/search/BaseSearchIndexProvider.java b/src/com/android/settings/search/BaseSearchIndexProvider.java index 0fe1944..49e2803 100644 --- a/src/com/android/settings/search/BaseSearchIndexProvider.java +++ b/src/com/android/settings/search/BaseSearchIndexProvider.java @@ -33,6 +33,10 @@ public class BaseSearchIndexProvider implements Indexable.SearchIndexProvider { } @Override + public void prepare() { + } + + @Override public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, boolean enabled) { return null; } diff --git a/src/com/android/settings/search/Index.java b/src/com/android/settings/search/Index.java index 267c6c0..c58923f 100644 --- a/src/com/android/settings/search/Index.java +++ b/src/com/android/settings/search/Index.java @@ -529,6 +529,18 @@ public class Index { synchronized (mDataToProcess) { final UpdateIndexTask task = new UpdateIndexTask(); UpdateData copy = mDataToProcess.copy(); + for (SearchIndexableData data : copy.dataToUpdate) { + if (data instanceof SearchIndexableResource) { + SearchIndexableResource sir = (SearchIndexableResource) data; + final Class<?> clazz = sir.className != null + ? getIndexableClass(sir.className) : null; + final Indexable.SearchIndexProvider provider = clazz != null + ? getSearchIndexProvider(clazz) : null; + if (provider != null) { + provider.prepare(); + } + } + } task.execute(copy); mDataToProcess.clear(); } diff --git a/src/com/android/settings/search/Indexable.java b/src/com/android/settings/search/Indexable.java index 19f88ae..c1c5b08 100644 --- a/src/com/android/settings/search/Indexable.java +++ b/src/com/android/settings/search/Indexable.java @@ -65,5 +65,10 @@ public interface Indexable { * @return a list of {@link SearchIndexableRaw} references. Can be null. */ List<String> getNonIndexableKeys(Context context); + + /** + * Prepare for indexing. Guaranteed to be called from the main thread. + */ + void prepare(); } } |