diff --git a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
index 94513e635e6e96b8b5d9ed413069ab34f5e0138d..0dd302afa501e1df3abd3a56c33494e49cab40f5 100644
--- a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
+++ b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
@@ -54,6 +54,13 @@ public final class RichInputMethodManager {
         return sInstance;
     }
 
+    // Caveat: This may cause IPC
+    public static boolean isInputMethodManagerValidForUserOfThisProcess(final Context context) {
+        // Basically called to check whether this IME has been triggered by the current user or not
+        return !((InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE)).
+                getInputMethodList().isEmpty();
+    }
+
     public static void init(final Context context) {
         final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
         sInstance.initInternal(context, prefs);
diff --git a/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java b/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java
index 1b893a65d07ecd025f33d968d1086912e1348262..6a7cd9b6fac20c2a7601a844fc7af146499cde8d 100644
--- a/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java
+++ b/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java
@@ -68,8 +68,15 @@ public final class LauncherIconVisibilityManager extends BroadcastReceiver {
         // 1) the package has been re-installed, 2) the device has been booted,
         // 3) a multiuser has been created.
         // There is no good reason to keep the process alive if this IME isn't a current IME.
-        RichInputMethodManager.init(context);
-        if (!SetupActivity.isThisImeCurrent(context)) {
+        final boolean isCurrentImeOfCurrentUser;
+        if (RichInputMethodManager.isInputMethodManagerValidForUserOfThisProcess(context)) {
+            RichInputMethodManager.init(context);
+            isCurrentImeOfCurrentUser = SetupActivity.isThisImeCurrent(context);
+        } else {
+            isCurrentImeOfCurrentUser = false;
+        }
+
+        if (!isCurrentImeOfCurrentUser) {
             final int myPid = Process.myPid();
             Log.i(TAG, "Killing my process: pid=" + myPid);
             Process.killProcess(myPid);