Consolidate InputMethodManager#toggleSoftInput reliability
As previously InputMethodManager#toggleSoftInput is designed to tell InputMethodService directly through IInputMethodSession to toggle soft-keyboard visibility, this could be happened some unexpected IME visibility issues that when the app calling this method in the wrong state like the app toggling IME visibility when the app is off-screen but unexpectedly it ends up showing soft-keyboard when the IME is in invisible state. To minimize the app compatibility without changing the public API surface and reducing unexpected IME visibilty been toggled behavior especially happens when switching the apps, changed the internal IPC protocols to call IMMS#showSoftInput or IMMS#hideSoftInput directly according the previous IME consumer requested visibility state, so that in IMMS side can validate to see if the token user is still focused and ready to toggle the IME visibility to show or hide. As the result, we deprecated toggleSoftInput and toggleSoftInputFromWindow to state the reason as the above, and recommand to use showSoftInput or hideSoftInputFromWindow instead, so that framework side no longer has to call {InputMethodSessionWrapper, InputMethodSessionImpl}#toggleSoftInput. Bug: 182071625 Test: m checkapi doc-comment-check-docs Test: atest KeyboardVisibilityControlTest#testToggleSoftInput Change-Id: I390dc029e7bcc30c200926a9bfbbbd0268a1f714
Loading
Please register or sign in to comment