diff options
author | 2013-12-06 15:05:52 +0900 | |
---|---|---|
committer | 2013-12-06 17:07:59 +0900 | |
commit | c5db41a9d5225abb3e3c8efa96f2f405bc904337 (patch) | |
tree | 100804c90a00417e4ae5096fc30ffba74c37e39c /java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java | |
parent | a72e8f1ede3dc11fb60bd1346e6c7cb07c5d126e (diff) | |
download | latinime-c5db41a9d5225abb3e3c8efa96f2f405bc904337.tar.gz latinime-c5db41a9d5225abb3e3c8efa96f2f405bc904337.tar.xz latinime-c5db41a9d5225abb3e3c8efa96f2f405bc904337.zip |
[RF4] Actually remove ver4 dicts
And fix a couple bugs.
Bug: 11281748
Change-Id: If07953a4b1ff9eb1165af03fdb332d7e47cd8f32
Diffstat (limited to 'java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index 41661573d..f53dc3748 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -27,6 +27,7 @@ import com.android.inputmethod.latin.makedict.FormatSpec; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.utils.AsyncResultHolder; import com.android.inputmethod.latin.utils.CollectionUtils; +import com.android.inputmethod.latin.utils.FileUtils; import com.android.inputmethod.latin.utils.PrioritizedSerialExecutor; import java.io.File; @@ -568,7 +569,9 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { || !matchesExpectedBinaryDictFormatVersionForThisType( mBinaryDictionary.getFormatVersion())) { final File file = new File(mContext.getFilesDir(), mFilename); - file.delete(); + if (!FileUtils.deleteRecursively(file)) { + Log.e(TAG, "Can't remove a file: " + file.getName()); + } BinaryDictionary.createEmptyDictFile(file.getAbsolutePath(), DICTIONARY_FORMAT_VERSION, getHeaderAttributeMap()); } else { @@ -664,17 +667,26 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { // load the shared dictionary. loadBinaryDictionary(); } - if (mBinaryDictionary != null && !(isValidDictionary() - // TODO: remove the check below - && matchesExpectedBinaryDictFormatVersionForThisType( - mBinaryDictionary.getFormatVersion()))) { - // Binary dictionary or its format version is not valid. Regenerate the - // dictionary file. - mFilenameDictionaryUpdateController.mLastUpdateTime = time; - writeBinaryDictionary(); - loadBinaryDictionary(); - } - mPerInstanceDictionaryUpdateController.mLastUpdateTime = time; + // If we just loaded the binary dictionary, then mBinaryDictionary is not + // up-to-date yet so it's useless to test it right away. Schedule the check + // for right after it's loaded instead. + getExecutor(mFilename).executePrioritized(new Runnable() { + @Override + public void run() { + if (mBinaryDictionary != null && !(isValidDictionary() + // TODO: remove the check below + && matchesExpectedBinaryDictFormatVersionForThisType( + mBinaryDictionary.getFormatVersion()))) { + // Binary dictionary or its format version is not valid. Regenerate + // the dictionary file. writeBinaryDictionary will remove the + // existing files if appropriate. + mFilenameDictionaryUpdateController.mLastUpdateTime = time; + writeBinaryDictionary(); + loadBinaryDictionary(); + } + mPerInstanceDictionaryUpdateController.mLastUpdateTime = time; + } + }); } finally { mFilenameDictionaryUpdateController.mProcessingLargeTask.set(false); } |