diff options
-rw-r--r-- | services/core/java/com/android/server/inputmethod/InputMethodManagerService.java | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 5ab9151c5fd6..ffdc9347369e 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -1331,17 +1331,19 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub @Override public void onPackageDataCleared(String packageName, int uid) { - boolean changed = false; - for (InputMethodInfo imi : mSettings.getMethodList()) { - if (imi.getPackageName().equals(packageName)) { - mAdditionalSubtypeMap.remove(imi.getId()); - changed = true; + synchronized (ImfLock.class) { + boolean changed = false; + for (InputMethodInfo imi : mSettings.getMethodList()) { + if (imi.getPackageName().equals(packageName)) { + mAdditionalSubtypeMap.remove(imi.getId()); + changed = true; + } + } + if (changed) { + AdditionalSubtypeUtils.save( + mAdditionalSubtypeMap, mSettings.getMethodMap(), mSettings.getUserId()); + mChangedPackages.add(packageName); } - } - if (changed) { - AdditionalSubtypeUtils.save( - mAdditionalSubtypeMap, mSettings.getMethodMap(), mSettings.getUserId()); - mChangedPackages.add(packageName); } } |