Merge "Quit blocking getSuggestion during GC."

This commit is contained in:
Keisuke Kuroyanagi 2013-10-01 07:08:10 +00:00 committed by Android (Google) Code Review
commit 126d758c1e
2 changed files with 21 additions and 12 deletions

View file

@ -270,18 +270,11 @@ public final class BinaryDictionary extends Dictionary {
return getBigramProbabilityNative(mNativeDict, codePoints0, codePoints1);
}
private void runGCIfRequired() {
if (needsToRunGC(true /* mindsBlockByGC */)) {
flushWithGC();
}
}
// Add a unigram entry to binary dictionary in native code.
public void addUnigramWord(final String word, final int probability) {
if (TextUtils.isEmpty(word)) {
return;
}
runGCIfRequired();
final int[] codePoints = StringUtils.toCodePointArray(word);
addUnigramWordNative(mNativeDict, codePoints, probability);
}
@ -291,7 +284,6 @@ public final class BinaryDictionary extends Dictionary {
if (TextUtils.isEmpty(word0) || TextUtils.isEmpty(word1)) {
return;
}
runGCIfRequired();
final int[] codePoints0 = StringUtils.toCodePointArray(word0);
final int[] codePoints1 = StringUtils.toCodePointArray(word1);
addBigramWordsNative(mNativeDict, codePoints0, codePoints1, probability);
@ -302,7 +294,6 @@ public final class BinaryDictionary extends Dictionary {
if (TextUtils.isEmpty(word0) || TextUtils.isEmpty(word1)) {
return;
}
runGCIfRequired();
final int[] codePoints0 = StringUtils.toCodePointArray(word0);
final int[] codePoints1 = StringUtils.toCodePointArray(word1);
removeBigramWordsNative(mNativeDict, codePoints0, codePoints1);

View file

@ -273,6 +273,24 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
lastModifiedTime);
}
private void runGCIfRequired() {
if (!ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) return;
if (mBinaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
if (setIsRegeneratingIfNotRegenerating()) {
getExecutor(mFilename).execute(new Runnable() {
@Override
public void run() {
try {
mBinaryDictionary.flushWithGC();
} finally {
mFilenameDictionaryUpdateController.mIsRegenerating.set(false);
}
}
});
}
}
}
/**
* Dynamically adds a word unigram to the dictionary. May overwrite an existing entry.
*/
@ -282,7 +300,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
Log.w(TAG, "addWordDynamically is called for non-updatable dictionary: " + mFilename);
return;
}
runGCIfRequired();
getExecutor(mFilename).execute(new Runnable() {
@Override
public void run() {
@ -306,7 +324,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
+ mFilename);
return;
}
runGCIfRequired();
getExecutor(mFilename).execute(new Runnable() {
@Override
public void run() {
@ -330,7 +348,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
+ mFilename);
return;
}
runGCIfRequired();
getExecutor(mFilename).execute(new Runnable() {
@Override
public void run() {