diff options
| author | 2019-03-07 17:30:33 +0000 | |
|---|---|---|
| committer | 2019-03-07 20:33:53 +0000 | |
| commit | 6fc4318b6b74e4620ada44c02051889b468da320 (patch) | |
| tree | df25ddf263457dee3b7d81aa7736af32c86240b8 | |
| parent | 9a3ebed84247f1780b5d2b2170f5fdb496dcdd67 (diff) | |
Switch to a better model file if any
The logic is already in annotator, just applies the same logic in
langid and actions.
Test: Change locale to non-english. Observe no more suggestion
on notification.
FIXES: 122912634
Change-Id: Icf80a1e3edf04db1947fe98c598ecfca3ed6139f
| -rw-r--r-- | core/java/android/view/textclassifier/TextClassifierImpl.java | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/core/java/android/view/textclassifier/TextClassifierImpl.java b/core/java/android/view/textclassifier/TextClassifierImpl.java index 632328be973e..79cc2cae8d5e 100644 --- a/core/java/android/view/textclassifier/TextClassifierImpl.java +++ b/core/java/android/view/textclassifier/TextClassifierImpl.java @@ -84,12 +84,17 @@ public final class TextClassifierImpl implements TextClassifier { private final GenerateLinksLogger mGenerateLinksLogger; private final Object mLock = new Object(); + @GuardedBy("mLock") // Do not access outside this lock. private ModelFileManager.ModelFile mAnnotatorModelInUse; @GuardedBy("mLock") // Do not access outside this lock. private AnnotatorModel mAnnotatorImpl; + + @GuardedBy("mLock") // Do not access outside this lock. + private ModelFileManager.ModelFile mLangIdModelInUse; @GuardedBy("mLock") // Do not access outside this lock. private LangIdModel mLangIdImpl; + @GuardedBy("mLock") // Do not access outside this lock. private ModelFileManager.ModelFile mActionModelInUse; @GuardedBy("mLock") // Do not access outside this lock. @@ -504,17 +509,19 @@ public final class TextClassifierImpl implements TextClassifier { private LangIdModel getLangIdImpl() throws FileNotFoundException { synchronized (mLock) { - if (mLangIdImpl == null) { - final ModelFileManager.ModelFile bestModel = - mLangIdModelFileManager.findBestModelFile(null); - if (bestModel == null) { - throw new FileNotFoundException("No LangID model is found"); - } + final ModelFileManager.ModelFile bestModel = + mLangIdModelFileManager.findBestModelFile(null); + if (bestModel == null) { + throw new FileNotFoundException("No LangID model is found"); + } + if (mLangIdImpl == null || !Objects.equals(mLangIdModelInUse, bestModel)) { + Log.d(DEFAULT_LOG_TAG, "Loading " + bestModel); final ParcelFileDescriptor pfd = ParcelFileDescriptor.open( new File(bestModel.getPath()), ParcelFileDescriptor.MODE_READ_ONLY); try { if (pfd != null) { mLangIdImpl = new LangIdModel(pfd.getFd()); + mLangIdModelInUse = bestModel; } } finally { maybeCloseAndLogError(pfd); @@ -527,13 +534,14 @@ public final class TextClassifierImpl implements TextClassifier { @Nullable private ActionsSuggestionsModel getActionsImpl() throws FileNotFoundException { synchronized (mLock) { - if (mActionsImpl == null) { - // TODO: Use LangID to determine the locale we should use here? - final ModelFileManager.ModelFile bestModel = - mActionsModelFileManager.findBestModelFile(LocaleList.getDefault()); - if (bestModel == null) { - return null; - } + // TODO: Use LangID to determine the locale we should use here? + final ModelFileManager.ModelFile bestModel = + mActionsModelFileManager.findBestModelFile(LocaleList.getDefault()); + if (bestModel == null) { + return null; + } + if (mActionsImpl == null || !Objects.equals(mActionModelInUse, bestModel)) { + Log.d(DEFAULT_LOG_TAG, "Loading " + bestModel); final ParcelFileDescriptor pfd = ParcelFileDescriptor.open( new File(bestModel.getPath()), ParcelFileDescriptor.MODE_READ_ONLY); try { |