am 113259a5: am 01a5a7d0: Merge "Clear cache of user dic" into jb-mr1-dev

* commit '113259a58b9240d1e0d3226c367cb176647df626':
  Clear cache of user dic
main
Satoshi Kataoka 2012-09-19 15:19:33 -07:00 committed by Android Git Automerger
commit 9d53fc2229
1 changed files with 23 additions and 0 deletions

View File

@ -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.