Always resume view when relaunching with preserved window

This relaxes the condition added in [1]. Because
IWindow#dispatchAppVisibility(true) may arrive after the
relaunch message, then getHostVisibility() will be GONE
because mAppVisible is still false.

The original concern is not a problem: call Activity#recreate()
while the activity is invisible. Because a stopped activity
won't use preserveWindow=true, it won't call VRI#notifyChildRebuilt.

[1]: Iee780c12535217a5a9726f9f4d6b21952ce56d70

Bug: 269179932
Test: WMShellFlickerTests:CopyContentInSplit

Change-Id: I7ea7d54f0c6bbf67b295ac3a2c97a62d81b0458b
This commit is contained in:
Riddle Hsu
2023-02-23 16:19:28 -06:00
parent fcb2bb5183
commit ab34d09bb8

View File

@@ -1136,7 +1136,7 @@ public final class ViewRootImpl implements ViewParent,
// Make sure to report the completion of draw for relaunch with preserved window.
reportNextDraw("rebuilt");
// Make sure to resume this root view when relaunching its host activity which was stopped.
if (mStopped && getHostVisibility() != View.GONE) {
if (mStopped) {
setWindowStopped(false);
}
}