diff options
3 files changed, 25 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 16591dab0c91..6ae07d4e6766 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -3235,6 +3235,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } boolean reportResumedActivityLocked(ActivityRecord r) { + // A resumed activity cannot be stopping. remove from list + mStoppingActivities.remove(r); + final ActivityStack stack = r.getStack(); if (isFocusedStack(stack)) { mService.updateUsageStats(r, true); diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java index fc9ab9635c57..661dd4fc828c 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java @@ -21,6 +21,7 @@ import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import android.content.ComponentName; import android.graphics.Rect; @@ -117,4 +118,21 @@ public class ActivityStackSupervisorTests extends ActivityTestsBase { assertTrue(stackTasks.contains(task)); } } + + /** + * Ensures that an activity is removed from the stopping activities list once it is resumed. + */ + @Test + public void testStoppingActivityRemovedWhenResumed() throws Exception { + final ActivityManagerService service = createActivityManagerService(); + final TaskRecord firstTask = createTask(service, testActivityComponent, + FULLSCREEN_WORKSPACE_STACK_ID); + final ActivityRecord firstActivity = createActivity(service, testActivityComponent, + firstTask); + service.mStackSupervisor.mStoppingActivities.add(firstActivity); + + firstActivity.completeResumeLocked(); + + assertFalse(service.mStackSupervisor.mStoppingActivities.contains(firstActivity)); + } } diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java index 55a1c2a0e837..55ecd7ade878 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java @@ -145,6 +145,10 @@ public class ActivityTestsBase { protected ActivityStackSupervisor createStackSupervisor() { return new TestActivityStackSupervisor(this, mHandlerThread.getLooper()); } + + @Override + void updateUsageStats(ActivityRecord component, boolean resumed) { + } } /** |