Keep addWordToDictionary from doing disk I/O on main thread
bug: 2999524
Change-Id: Id8b04d38079cfa1dadd5955eb7f83085e60eb8e2
diff --git a/java/src/com/android/inputmethod/latin/UserDictionary.java b/java/src/com/android/inputmethod/latin/UserDictionary.java
index 3315cf6..49b95e9 100644
--- a/java/src/com/android/inputmethod/latin/UserDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserDictionary.java
@@ -89,13 +89,19 @@
super.addWord(word, frequency);
// Update the user dictionary provider
- ContentValues values = new ContentValues(5);
+ final ContentValues values = new ContentValues(5);
values.put(Words.WORD, word);
values.put(Words.FREQUENCY, frequency);
values.put(Words.LOCALE, mLocale);
values.put(Words.APP_ID, 0);
- getContext().getContentResolver().insert(Words.CONTENT_URI, values);
+ final ContentResolver contentResolver = getContext().getContentResolver();
+ new Thread("addWord") {
+ public void run() {
+ contentResolver.insert(Words.CONTENT_URI, values);
+ }
+ }.start();
+
// In case the above does a synchronous callback of the change observer
setRequiresReload(false);
}