diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 840e52894ea790937d1e20248e1a02e3303bdff9..2a1b3fb7f11dbee74174138d8171aa6e2c3da831 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -141,7 +141,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
     private int mKeyHintLabelSize;
 
     // Key preview
-    private boolean mInForeground;
     private final TextView mPreviewText;
     private int mPreviewTextSize;
     private boolean mShowKeyPreviewPopup = true;
@@ -935,10 +934,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
         canvas.translate(-x, -y);
     }
 
-    public void setForeground(boolean foreground) {
-        mInForeground = foreground;
-    }
-
     // TODO: clean up this method.
     private void dismissAllKeyPreviews() {
         for (PointerTracker tracker : mPointerTrackers) {
@@ -947,6 +942,10 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
         }
     }
 
+    public void cancelAllMessage() {
+        mHandler.cancelAllMessages();
+    }
+
     @Override
     public void showKeyPreview(int keyIndex, PointerTracker tracker) {
         if (mShowKeyPreviewPopup) {
@@ -991,7 +990,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
         // If keyIndex is invalid or IME is already closed, we must not show key preview.
         // Trying to show key preview while root window is closed causes
         // WindowManager.BadTokenException.
-        if (key == null || !mInForeground)
+        if (key == null)
             return;
 
         mHandler.cancelAllDismissKeyPreviews();
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 45f35ec035da9cfec7fcf10e375639c1b0ab0fd5..874d77f19f2401ecfc384b83ea46c3f1c6fbdc28 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -591,7 +591,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
         inputView.setProximityCorrectionEnabled(true);
         // If we just entered a text field, maybe it has some old text that requires correction
         mRecorrection.checkRecorrectionOnStart();
-        inputView.setForeground(true);
 
         voiceIme.onStartInputView(inputView.getWindowToken());
 
@@ -679,7 +678,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
     public void onFinishInputView(boolean finishingInput) {
         super.onFinishInputView(finishingInput);
         KeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
-        if (inputView != null) inputView.setForeground(false);
+        if (inputView != null) inputView.cancelAllMessage();
         // Remove pending messages related to update suggestions
         mHandler.cancelUpdateSuggestions();
         mHandler.cancelUpdateOldSuggestions();