diff options
author | 2009-10-08 13:06:37 -0700 | |
---|---|---|
committer | 2009-10-08 13:06:37 -0700 | |
commit | b3f6d58b6ec716c26df38b584eda061265437cf4 (patch) | |
tree | bbbc891d901579846fb6aee73c5da7939bc2f883 /src | |
parent | 3fd9d9e3e07587a913cc5bb54c6a0fc08f048d0d (diff) | |
download | latinime-b3f6d58b6ec716c26df38b584eda061265437cf4.tar.gz latinime-b3f6d58b6ec716c26df38b584eda061265437cf4.tar.xz latinime-b3f6d58b6ec716c26df38b584eda061265437cf4.zip |
Fix for 2148982: Keyboard freezes while typing
Contacts dictionary code was being triggered too frequently during sync and
during presence updates and this seems expensive for accounts with a lot of
contacts.
Throttling the contacts read to every 30 minutes.
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/inputmethod/latin/ContactsDictionary.java | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/com/android/inputmethod/latin/ContactsDictionary.java b/src/com/android/inputmethod/latin/ContactsDictionary.java index e8faf45a1..6f7f4b6a4 100644 --- a/src/com/android/inputmethod/latin/ContactsDictionary.java +++ b/src/com/android/inputmethod/latin/ContactsDictionary.java @@ -16,16 +16,11 @@ package com.android.inputmethod.latin; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; import android.database.Cursor; import android.provider.ContactsContract.Contacts; -import android.util.Log; public class ContactsDictionary extends ExpandableDictionary { @@ -40,6 +35,8 @@ public class ContactsDictionary extends ExpandableDictionary { private boolean mRequiresReload; + private long mLastLoadedContacts; + public ContactsDictionary(Context context) { super(context); // Perform a managed query. The Activity will handle closing and requerying the cursor @@ -64,12 +61,17 @@ public class ContactsDictionary extends ExpandableDictionary { } private synchronized void loadDictionary() { - Cursor cursor = getContext().getContentResolver() - .query(Contacts.CONTENT_URI, PROJECTION, null, null, null); - if (cursor != null) { - addWords(cursor); + long now = android.os.SystemClock.uptimeMillis(); + if (mLastLoadedContacts == 0 + || now - mLastLoadedContacts > 30 * 60 * 1000 /* 30 minutes */) { + Cursor cursor = getContext().getContentResolver() + .query(Contacts.CONTENT_URI, PROJECTION, null, null, null); + if (cursor != null) { + addWords(cursor); + } + mRequiresReload = false; + mLastLoadedContacts = now; } - mRequiresReload = false; } @Override |