Code refactoring
Change-Id: I053ab0c691295b81dc7aa0fd858fd609a69ade81
diff --git a/src/com/android/settings/indexer/Index.java b/src/com/android/settings/indexer/Index.java
index 5139e0c..df1a58f 100644
--- a/src/com/android/settings/indexer/Index.java
+++ b/src/com/android/settings/indexer/Index.java
@@ -160,28 +160,28 @@
return sb.toString();
}
- public void addIndexableData(IndexableData data) {
- mDataToIndex.add(data);
- }
-
public void addIndexableData(IndexableData[] array) {
- final int count = array.length;
- for (int n = 0; n < count; n++) {
- addIndexableData(array[n]);
+ synchronized (mDataToIndex) {
+ final int count = array.length;
+ for (int n = 0; n < count; n++) {
+ mDataToIndex.add(array[n]);
+ }
}
}
public boolean update() {
- final IndexTask task = new IndexTask();
- task.execute();
- try {
- return task.get();
- } catch (InterruptedException e) {
- Log.e(LOG_TAG, "Cannot update index: " + e.getMessage());
- return false;
- } catch (ExecutionException e) {
- Log.e(LOG_TAG, "Cannot update index: " + e.getMessage());
- return false;
+ synchronized (mDataToIndex) {
+ final IndexTask task = new IndexTask();
+ task.execute(mDataToIndex);
+ try {
+ return task.get();
+ } catch (InterruptedException e) {
+ Log.e(LOG_TAG, "Cannot update index: " + e.getMessage());
+ return false;
+ } catch (ExecutionException e) {
+ Log.e(LOG_TAG, "Cannot update index: " + e.getMessage());
+ return false;
+ }
}
}
@@ -196,7 +196,7 @@
/**
* A private class for updating the Index database
*/
- private class IndexTask extends AsyncTask<Void, Integer, Boolean> {
+ private class IndexTask extends AsyncTask<List<IndexableData>, Integer, Boolean> {
@Override
protected void onPreExecute() {
@@ -211,9 +211,13 @@
}
@Override
- protected Boolean doInBackground(Void... params) {
- final SQLiteDatabase database = getWritableDatabase();
+ protected Boolean doInBackground(List<IndexableData>... params) {
boolean result = false;
+ final List<IndexableData> dataToIndex = params[0];
+ if (null == dataToIndex || dataToIndex.size() == 0) {
+ return result;
+ }
+ final SQLiteDatabase database = getWritableDatabase();
final Locale locale = Locale.getDefault();
final String localeStr = locale.toString();
if (isLocaleAlreadyIndexed(database, locale)) {