From a56ea12ca5aae2552fbe6ac54abb7de83820675a Mon Sep 17 00:00:00 2001 From: Mark Lu Date: Thu, 8 Oct 2015 13:31:01 +0800 Subject: Fix resumeHomeStackTask can't resume home if activity is finishing. Not to resume home activity in finishing stage as following case: When only home task has 2 activities, (ex: SetupWizard & DeviceOwnerProvisioningActivity), If SetupWizard crashed during DeviceOwnerProvisioningActivity in finishing stage, makes DeviceOwnerProvisioningActivity cannot destroy immediately, In resumeHomeStackTask, will resume DeviceOwnerProvisioningActivity (returned by getHomeActivity), But actually, DeviceOwnerProvisioningActivity cannot be resumed. Caused ANR when back key since no more running activity can resume. Change-Id: Icec49e092d2e7bee7f6a2d198913c1c5db7122f2 --- services/core/java/com/android/server/am/ActivityStackSupervisor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 83fb7c2eaacd..af6f185e18af 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -511,7 +511,8 @@ public final class ActivityStackSupervisor implements DisplayListener { mHomeStack.moveHomeStackTaskToTop(homeStackTaskType); ActivityRecord r = getHomeActivity(); - if (r != null) { + // Only resume home activity if isn't finishing. + if (r != null && !r.finishing) { mService.setFocusedActivityLocked(r, reason); return resumeTopActivitiesLocked(mHomeStack, prev, null); } -- cgit v1.2.3-59-g8ed1b