diff --git a/java/src/com/android/inputmethod/latin/UserDictionary.java b/java/src/com/android/inputmethod/latin/UserDictionary.java
index 3315cf6c9d4d5ed7c2258d79157fe559296804f9..49b95e9aa14279c8e869871f84d4b3cab1867c6d 100644
--- a/java/src/com/android/inputmethod/latin/UserDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserDictionary.java
@@ -89,13 +89,19 @@ public class UserDictionary extends ExpandableDictionary {
         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);
     }