Loading java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java +23 −0 Original line number Original line Diff line number Diff line Loading @@ -16,9 +16,12 @@ package com.android.inputmethod.latin.spellcheck; package com.android.inputmethod.latin.spellcheck; import android.content.ContentResolver; import android.content.Intent; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences; import android.database.ContentObserver; import android.preference.PreferenceManager; import android.preference.PreferenceManager; import android.provider.UserDictionary.Words; import android.service.textservice.SpellCheckerService; import android.service.textservice.SpellCheckerService; import android.text.TextUtils; import android.text.TextUtils; import android.util.Log; import android.util.Log; Loading Loading @@ -490,6 +493,7 @@ public class AndroidSpellCheckerService extends SpellCheckerService private final AndroidSpellCheckerService mService; private final AndroidSpellCheckerService mService; private final SuggestionsCache mSuggestionsCache = new SuggestionsCache(); private final SuggestionsCache mSuggestionsCache = new SuggestionsCache(); private final ContentObserver mObserver; private static class SuggestionsParams { private static class SuggestionsParams { public final String[] mSuggestions; public final String[] mSuggestions; Loading @@ -516,10 +520,23 @@ public class AndroidSpellCheckerService extends SpellCheckerService } } mUnigramSuggestionsInfoCache.put(query, new SuggestionsParams(suggestions, flags)); mUnigramSuggestionsInfoCache.put(query, new SuggestionsParams(suggestions, flags)); } } public void clearCache() { mUnigramSuggestionsInfoCache.evictAll(); } } } AndroidSpellCheckerSession(final AndroidSpellCheckerService service) { AndroidSpellCheckerSession(final AndroidSpellCheckerService service) { mService = service; mService = service; final ContentResolver cres = service.getContentResolver(); mObserver = new ContentObserver(null) { @Override public void onChange(boolean self) { mSuggestionsCache.clearCache(); } }; cres.registerContentObserver(Words.CONTENT_URI, true, mObserver); } } @Override @Override Loading @@ -530,6 +547,12 @@ public class AndroidSpellCheckerService extends SpellCheckerService mScript = getScriptFromLocale(mLocale); mScript = getScriptFromLocale(mLocale); } } @Override public void onClose() { final ContentResolver cres = mService.getContentResolver(); cres.unregisterContentObserver(mObserver); } /* /* * Returns whether the code point is a letter that makes sense for the specified * Returns whether the code point is a letter that makes sense for the specified * locale for this spell checker. * locale for this spell checker. Loading Loading
java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java +23 −0 Original line number Original line Diff line number Diff line Loading @@ -16,9 +16,12 @@ package com.android.inputmethod.latin.spellcheck; package com.android.inputmethod.latin.spellcheck; import android.content.ContentResolver; import android.content.Intent; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences; import android.database.ContentObserver; import android.preference.PreferenceManager; import android.preference.PreferenceManager; import android.provider.UserDictionary.Words; import android.service.textservice.SpellCheckerService; import android.service.textservice.SpellCheckerService; import android.text.TextUtils; import android.text.TextUtils; import android.util.Log; import android.util.Log; Loading Loading @@ -490,6 +493,7 @@ public class AndroidSpellCheckerService extends SpellCheckerService private final AndroidSpellCheckerService mService; private final AndroidSpellCheckerService mService; private final SuggestionsCache mSuggestionsCache = new SuggestionsCache(); private final SuggestionsCache mSuggestionsCache = new SuggestionsCache(); private final ContentObserver mObserver; private static class SuggestionsParams { private static class SuggestionsParams { public final String[] mSuggestions; public final String[] mSuggestions; Loading @@ -516,10 +520,23 @@ public class AndroidSpellCheckerService extends SpellCheckerService } } mUnigramSuggestionsInfoCache.put(query, new SuggestionsParams(suggestions, flags)); mUnigramSuggestionsInfoCache.put(query, new SuggestionsParams(suggestions, flags)); } } public void clearCache() { mUnigramSuggestionsInfoCache.evictAll(); } } } AndroidSpellCheckerSession(final AndroidSpellCheckerService service) { AndroidSpellCheckerSession(final AndroidSpellCheckerService service) { mService = service; mService = service; final ContentResolver cres = service.getContentResolver(); mObserver = new ContentObserver(null) { @Override public void onChange(boolean self) { mSuggestionsCache.clearCache(); } }; cres.registerContentObserver(Words.CONTENT_URI, true, mObserver); } } @Override @Override Loading @@ -530,6 +547,12 @@ public class AndroidSpellCheckerService extends SpellCheckerService mScript = getScriptFromLocale(mLocale); mScript = getScriptFromLocale(mLocale); } } @Override public void onClose() { final ContentResolver cres = mService.getContentResolver(); cres.unregisterContentObserver(mObserver); } /* /* * Returns whether the code point is a letter that makes sense for the specified * Returns whether the code point is a letter that makes sense for the specified * locale for this spell checker. * locale for this spell checker. Loading