Loading services/core/java/com/android/server/wm/ActivityRecord.java +6 −0 Original line number Diff line number Diff line Loading @@ -4114,6 +4114,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Now that the app is going invisible, we can remove it. It will be restarted // if made visible again. removeDeadWindows(); // If this activity is about to finish/stopped and now becomes invisible, remove it // from the unknownApp list in case the activity does not want to draw anything, which // keep the user waiting for the next transition to start. if (finishing || isState(STOPPED)) { displayContent.mUnknownAppVisibilityController.appRemovedOrHidden(this); } } else { if (!appTransition.isTransitionSet() && appTransition.isReady()) { Loading services/core/java/com/android/server/wm/AppTransition.java +6 −6 Original line number Diff line number Diff line Loading @@ -337,6 +337,11 @@ public class AppTransition implements Dump { mNextAppTransitionFlags |= flags; setLastAppTransition(TRANSIT_UNSET, null, null, null); updateBooster(); if (isTransitionSet()) { removeAppTransitionTimeoutCallbacks(); mHandler.postDelayed(mHandleAppTransitionTimeoutRunnable, APP_TRANSITION_TIMEOUT_MS); } } void setLastAppTransition(int transit, ActivityRecord openingApp, ActivityRecord closingApp, Loading Loading @@ -2229,12 +2234,7 @@ public class AppTransition implements Dump { setAppTransition(transit, flags); } } boolean prepared = prepare(); if (isTransitionSet()) { removeAppTransitionTimeoutCallbacks(); mHandler.postDelayed(mHandleAppTransitionTimeoutRunnable, APP_TRANSITION_TIMEOUT_MS); } return prepared; return prepare(); } /** Loading services/tests/wmtests/src/com/android/server/wm/UnknownAppVisibilityControllerTest.java +10 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,16 @@ public class UnknownAppVisibilityControllerTest extends WindowTestsBase { assertTrue(mDisplayContent.mUnknownAppVisibilityController.allResolved()); } @Test public void testRemoveFinishingInvisibleActivityFromUnknown() { final ActivityRecord activity = WindowTestUtils.createTestActivityRecord(mDisplayContent); mDisplayContent.mUnknownAppVisibilityController.notifyLaunched(activity); activity.finishing = true; activity.mVisibleRequested = true; activity.setVisibility(false, false); assertTrue(mDisplayContent.mUnknownAppVisibilityController.allResolved()); } @Test public void testAppRemoved() { final ActivityRecord activity = WindowTestUtils.createTestActivityRecord(mDisplayContent); Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +6 −0 Original line number Diff line number Diff line Loading @@ -4114,6 +4114,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Now that the app is going invisible, we can remove it. It will be restarted // if made visible again. removeDeadWindows(); // If this activity is about to finish/stopped and now becomes invisible, remove it // from the unknownApp list in case the activity does not want to draw anything, which // keep the user waiting for the next transition to start. if (finishing || isState(STOPPED)) { displayContent.mUnknownAppVisibilityController.appRemovedOrHidden(this); } } else { if (!appTransition.isTransitionSet() && appTransition.isReady()) { Loading
services/core/java/com/android/server/wm/AppTransition.java +6 −6 Original line number Diff line number Diff line Loading @@ -337,6 +337,11 @@ public class AppTransition implements Dump { mNextAppTransitionFlags |= flags; setLastAppTransition(TRANSIT_UNSET, null, null, null); updateBooster(); if (isTransitionSet()) { removeAppTransitionTimeoutCallbacks(); mHandler.postDelayed(mHandleAppTransitionTimeoutRunnable, APP_TRANSITION_TIMEOUT_MS); } } void setLastAppTransition(int transit, ActivityRecord openingApp, ActivityRecord closingApp, Loading Loading @@ -2229,12 +2234,7 @@ public class AppTransition implements Dump { setAppTransition(transit, flags); } } boolean prepared = prepare(); if (isTransitionSet()) { removeAppTransitionTimeoutCallbacks(); mHandler.postDelayed(mHandleAppTransitionTimeoutRunnable, APP_TRANSITION_TIMEOUT_MS); } return prepared; return prepare(); } /** Loading
services/tests/wmtests/src/com/android/server/wm/UnknownAppVisibilityControllerTest.java +10 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,16 @@ public class UnknownAppVisibilityControllerTest extends WindowTestsBase { assertTrue(mDisplayContent.mUnknownAppVisibilityController.allResolved()); } @Test public void testRemoveFinishingInvisibleActivityFromUnknown() { final ActivityRecord activity = WindowTestUtils.createTestActivityRecord(mDisplayContent); mDisplayContent.mUnknownAppVisibilityController.notifyLaunched(activity); activity.finishing = true; activity.mVisibleRequested = true; activity.setVisibility(false, false); assertTrue(mDisplayContent.mUnknownAppVisibilityController.allResolved()); } @Test public void testAppRemoved() { final ActivityRecord activity = WindowTestUtils.createTestActivityRecord(mDisplayContent); Loading