aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
diff options
context:
space:
mode:
authorSatoshi Kataoka <satok@google.com>2012-09-19 20:03:13 +0900
committerSatoshi Kataoka <satok@google.com>2012-09-19 20:11:45 +0900
commit17f7b406aa976ea147497dccac8e80c3aaaae370 (patch)
treef5c9ffd778602a85b65eba3d094bf04b92730a4f /java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
parent87cecf7db61536d9f7ec07fe198d37a11b6c8407 (diff)
downloadlatinime-17f7b406aa976ea147497dccac8e80c3aaaae370.tar.gz
latinime-17f7b406aa976ea147497dccac8e80c3aaaae370.tar.xz
latinime-17f7b406aa976ea147497dccac8e80c3aaaae370.zip
Clear cache of user dic
Change-Id: Iec2793de3fff7bf15f68f82a50331de7742b7049
Diffstat (limited to 'java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java')
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
index f4784ff1a..d9b622a18 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
@@ -16,6 +16,9 @@
package com.android.inputmethod.latin.spellcheck;
+import android.content.ContentResolver;
+import android.database.ContentObserver;
+import android.provider.UserDictionary.Words;
import android.service.textservice.SpellCheckerService.Session;
import android.text.TextUtils;
import android.util.Log;
@@ -45,6 +48,7 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
private int mScript; // One of SCRIPT_LATIN or SCRIPT_CYRILLIC for now.
private final AndroidSpellCheckerService mService;
protected final SuggestionsCache mSuggestionsCache = new SuggestionsCache();
+ private final ContentObserver mObserver;
private static class SuggestionsParams {
public final String[] mSuggestions;
@@ -83,10 +87,23 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
mUnigramSuggestionsInfoCache.put(
generateKey(query, prevWord), new SuggestionsParams(suggestions, flags));
}
+
+ public void clearCache() {
+ mUnigramSuggestionsInfoCache.evictAll();
+ }
}
AndroidWordLevelSpellCheckerSession(final AndroidSpellCheckerService 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
@@ -97,6 +114,12 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
mScript = AndroidSpellCheckerService.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
* locale for this spell checker.