Merge "Don't cache IME surface in fullscreen mode" into sc-dev am: e81d43c1e1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14665440

Change-Id: Ic2661790b288c179bb50ebb6bbac6b71073f2d0e
This commit is contained in:
Taran Singh
2021-05-26 18:06:51 +00:00
committed by Automerger Merge Worker

View File

@@ -481,6 +481,7 @@ public class InputMethodService extends AbstractInputMethodService {
boolean mFullscreenApplied; boolean mFullscreenApplied;
boolean mIsFullscreen; boolean mIsFullscreen;
private boolean mLastWasInFullscreenMode;
@UnsupportedAppUsage @UnsupportedAppUsage
View mExtractView; View mExtractView;
boolean mExtractViewHidden; boolean mExtractViewHidden;
@@ -920,8 +921,17 @@ public class InputMethodService extends AbstractInputMethodService {
if (mHandler == null) { if (mHandler == null) {
mHandler = new Handler(getMainLooper()); mHandler = new Handler(getMainLooper());
} }
mImeSurfaceScheduledForRemoval = true;
mHandler.postDelayed(() -> removeImeSurface(), TIMEOUT_SURFACE_REMOVAL_MILLIS); if (mLastWasInFullscreenMode) {
// Caching surface / delaying surface removal can cause mServedView to detach in certain
// cases in RecyclerView (b/187772544).
// TODO(b/188818557): Re-enable IME surface caching for fullscreen mode once detaching
// view issues is resolved in RecyclerView.
removeImeSurface();
} else {
mImeSurfaceScheduledForRemoval = true;
mHandler.postDelayed(() -> removeImeSurface(), TIMEOUT_SURFACE_REMOVAL_MILLIS);
}
} }
private void removeImeSurface() { private void removeImeSurface() {
@@ -2350,6 +2360,7 @@ public class InputMethodService extends AbstractInputMethodService {
onWindowHidden(); onWindowHidden();
mDecorViewWasVisible = false; mDecorViewWasVisible = false;
} }
mLastWasInFullscreenMode = mIsFullscreen;
updateFullscreenMode(); updateFullscreenMode();
} }