Pre-render input method (IME transitions 1/n)
Pre-render input method views and window when EditText receives focus. This is a pre-requisite for implementing better IME transitions. Strategy: Once EditText receives focus, startInput is called. If optimization is available, IME views and window (SoftInputWindow) are created and rendered. Until user taps on EditText or showSoftInput() is called, IME window remains invisible. This pre-rendered window is kept around until EditorInfo changes or new connection is started (onStartInput). IME window's visibility will be set using new Insets controller API rather than conventional client-side dialog.show(). Behavior: - This is just IME side preparation CL. No performance improvements yet. - There should be no user perceptible behavior change. - As long as IME developers were following official lifecycle, they shouldn't perceive any behavior change. Availability: This optimization, once fully implemented, will be available when: - Device is not "Low memory" - AND Master flag DebugFlags.FLAG_PRE_RENDER_IME_VIEWS is set. - ViewRootImpl.USE_NEW_INSETS_API is enabled Bug: 118599175 Bug: 111084606 Test: atest CtsInputMethodTestCases Test: atest CtsInputMethodServiceHostTestCases Test: atest ActivityManagerMultiDisplayTests Test: Tested with 4 IMEs and didn't preceive any behavior change. Scenarios tested: 1. With and without hardware keyboard 2. Screen rotation w/ fullscreen mode. 3. split-screen Change-Id: I1a6300fe167eb205ee2b4214a6e270a52ebae062
Loading
Please register or sign in to comment