Merge "Destroy ActivityRecord when it is removed from the hierarchy" into sc-v2-dev

This commit is contained in:
Chris Li
2021-08-05 18:15:28 +00:00
committed by Android (Google) Code Review
2 changed files with 16 additions and 1 deletions

View File

@@ -3687,7 +3687,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
@Override
void removeImmediately() {
if (!finishing) {
if (!isState(DESTROYING, DESTROYED)) {
// If Task#removeImmediately is called directly with alive activities, ensure that the
// activities are destroyed and detached from process.
destroyImmediately("removeImmediately");

View File

@@ -1615,6 +1615,21 @@ public class ActivityRecordTests extends WindowTestsBase {
assertFalse(wpc.hasActivities());
}
@Test
public void testRemoveImmediatelyWithFinishingActivity() throws RemoteException {
final ActivityRecord activity = createActivityWithTask();
final WindowProcessController wpc = activity.app;
activity.makeFinishingLocked();
assertTrue(activity.finishing);
activity.getTask().removeImmediately("test");
verify(mAtm.getLifecycleManager()).scheduleTransaction(any(), eq(activity.appToken),
isA(DestroyActivityItem.class));
assertFalse(wpc.hasActivities());
assertEquals(DESTROYING, activity.getState());
}
@Test
public void testRemoveFromHistory() {
final ActivityRecord activity = createActivityWithTask();