diff options
author | 2015-02-17 15:12:05 -0800 | |
---|---|---|
committer | 2015-02-19 11:40:57 -0800 | |
commit | 0b03f13cabec84d2d841fde47ce9fec0d531b6a1 (patch) | |
tree | 5cc14dea6693025f25d279dd59140c04d0d7495f /java/src/com/android/inputmethod/latin/ContactsContentObserver.java | |
parent | 95711bfcee07d848883316cf07439408f5b332a1 (diff) | |
download | latinime-0b03f13cabec84d2d841fde47ce9fec0d531b6a1.tar.gz latinime-0b03f13cabec84d2d841fde47ce9fec0d531b6a1.tar.xz latinime-0b03f13cabec84d2d841fde47ce9fec0d531b6a1.zip |
Sanitize the usage of executors.
There should be 1 executor each for static and dynamic language models.
This prevents too many dynamic LM updates from running in parallel,
competing for resources.
Change-Id: I8ec439e0ea2d92fba275bc20a0b8c9193346a0c1
Diffstat (limited to 'java/src/com/android/inputmethod/latin/ContactsContentObserver.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/ContactsContentObserver.java | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/java/src/com/android/inputmethod/latin/ContactsContentObserver.java b/java/src/com/android/inputmethod/latin/ContactsContentObserver.java index 019d17d56..b23226dce 100644 --- a/java/src/com/android/inputmethod/latin/ContactsContentObserver.java +++ b/java/src/com/android/inputmethod/latin/ContactsContentObserver.java @@ -23,22 +23,21 @@ import android.os.SystemClock; import android.provider.ContactsContract.Contacts; import android.util.Log; -import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.latin.ContactsManager.ContactsChangedListener; import com.android.inputmethod.latin.utils.ExecutorUtils; import java.util.ArrayList; -import java.util.concurrent.ExecutorService; /** - * A content observer that listens to updates to content provider {@link Contacts.CONTENT_URI}. + * A content observer that listens to updates to content provider {@link Contacts#CONTENT_URI}. */ // TODO:add test -public class ContactsContentObserver { +public class ContactsContentObserver implements Runnable { private static final String TAG = ContactsContentObserver.class.getSimpleName(); private static final boolean DEBUG = false; - private ContentObserver mObserver; + private ContentObserver mContentObserver; + private ContactsChangedListener mContactsChangedListener; private final Context mContext; private final ContactsManager mManager; @@ -52,29 +51,27 @@ public class ContactsContentObserver { if (DEBUG) { Log.d(TAG, "Registered Contacts Content Observer"); } - mObserver = new ContentObserver(null /* handler */) { + mContactsChangedListener = listener; + mContentObserver = new ContentObserver(null /* handler */) { @Override public void onChange(boolean self) { - getBgExecutor().execute(new Runnable() { - @Override - public void run() { - if (haveContentsChanged()) { - if (DEBUG) { - Log.d(TAG, "Contacts have changed; notifying listeners"); - } - listener.onContactsChange(); - } - } - }); + // TODO(zivkovic): Limit the queue to 1 instance of ContactsContentObserver. + ExecutorUtils.getExecutorForDynamicLanguageModelUpdate() + .execute(ContactsContentObserver.this); } }; final ContentResolver contentResolver = mContext.getContentResolver(); - contentResolver.registerContentObserver(Contacts.CONTENT_URI, true, mObserver); + contentResolver.registerContentObserver(Contacts.CONTENT_URI, true, mContentObserver); } - @UsedForTesting - private ExecutorService getBgExecutor() { - return ExecutorUtils.getExecutor("Check Contacts"); + @Override + public void run() { + if (haveContentsChanged()) { + if (DEBUG) { + Log.d(TAG, "Contacts have changed; notifying listeners"); + } + mContactsChangedListener.onContactsChange(); + } } private boolean haveContentsChanged() { @@ -105,6 +102,6 @@ public class ContactsContentObserver { } public void unregister() { - mContext.getContentResolver().unregisterContentObserver(mObserver); + mContext.getContentResolver().unregisterContentObserver(mContentObserver); } } |