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);
     }