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

This commit is contained in:
Taran Singh
2021-05-26 17:54:45 +00:00
committed by Android (Google) Code Review

View File

@@ -481,6 +481,7 @@ public class InputMethodService extends AbstractInputMethodService {
boolean mFullscreenApplied;
boolean mIsFullscreen;
private boolean mLastWasInFullscreenMode;
@UnsupportedAppUsage
View mExtractView;
boolean mExtractViewHidden;
@@ -920,8 +921,17 @@ public class InputMethodService extends AbstractInputMethodService {
if (mHandler == null) {
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() {
@@ -2350,6 +2360,7 @@ public class InputMethodService extends AbstractInputMethodService {
onWindowHidden();
mDecorViewWasVisible = false;
}
mLastWasInFullscreenMode = mIsFullscreen;
updateFullscreenMode();
}