diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index 74ed348d663fb..72a886b479ae3 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -994,7 +994,7 @@ public final class InputMethodManager { return mServedInputConnection != null && mServedInputConnection.isActive() - && mServedInputConnection.getServedView() == view; + && mServedInputConnection.isAssociatedWith(view); } } diff --git a/core/java/android/view/inputmethod/RemoteInputConnectionImpl.java b/core/java/android/view/inputmethod/RemoteInputConnectionImpl.java index 9376878152004..3f9d5dc158eae 100644 --- a/core/java/android/view/inputmethod/RemoteInputConnectionImpl.java +++ b/core/java/android/view/inputmethod/RemoteInputConnectionImpl.java @@ -218,10 +218,26 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { return mParentInputMethodManager.isActive() && !isFinished(); } - public View getServedView() { + private View getServedView() { return mServedView.get(); } + /** + * Queries if the given {@link View} is associated with this {@link RemoteInputConnectionImpl} + * or not. + * + * @param view {@link View}. + * @return {@code true} if the given {@link View} is not null and is associated with this + * {@link RemoteInputConnectionImpl}. + */ + @AnyThread + public boolean isAssociatedWith(@Nullable View view) { + if (view == null) { + return false; + } + return mServedView.refersTo(view); + } + /** * Gets and resets {@link #mHasPendingImmediateCursorAnchorInfoUpdate}. *