diff options
| author | 2019-11-12 21:31:52 +0000 | |
|---|---|---|
| committer | 2019-11-12 21:31:52 +0000 | |
| commit | c2c33d4e938f30076d46364e2a55237cdd9079f4 (patch) | |
| tree | af6a22a69520ab041cc590884cd5ace37d89ff05 | |
| parent | d1da43b5143d4bd85587d7d97bd990c293ad2a46 (diff) | |
| parent | a0175abdda521ed1233882dedabd35d98fc667b2 (diff) | |
Merge "Defer resuming when creating home stack for starting home"
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityStartController.java | 14 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/RootActivityContainer.java | 3 |
2 files changed, 14 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStartController.java b/services/core/java/com/android/server/wm/ActivityStartController.java index 3c79c32fb008..d3fd450f311a 100644 --- a/services/core/java/com/android/server/wm/ActivityStartController.java +++ b/services/core/java/com/android/server/wm/ActivityStartController.java @@ -182,9 +182,17 @@ public class ActivityStartController { final ActivityDisplay display = mService.mRootActivityContainer.getActivityDisplay(displayId); - // Make sure home stack exist on display. - final ActivityStack homeStack = - display.getOrCreateStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, ON_TOP); + // The home activity will be started later, defer resuming to avoid unneccerary operations + // (e.g. start home recursively) when creating home stack. + mSupervisor.beginDeferResume(); + final ActivityStack homeStack; + try { + // Make sure home stack exist on display. + homeStack = display.getOrCreateStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, + ON_TOP); + } finally { + mSupervisor.endDeferResume(); + } mLastHomeActivityStartResult = obtainStarter(intent, "startHomeActivity: " + reason) .setOutActivity(tmpOutRecord) diff --git a/services/core/java/com/android/server/wm/RootActivityContainer.java b/services/core/java/com/android/server/wm/RootActivityContainer.java index cb41372f6960..5a21016e54dc 100644 --- a/services/core/java/com/android/server/wm/RootActivityContainer.java +++ b/services/core/java/com/android/server/wm/RootActivityContainer.java @@ -1156,6 +1156,9 @@ class RootActivityContainer extends ConfigurationContainer final ActivityStack focusedStack = display.getFocusedStack(); if (focusedStack != null) { result |= focusedStack.resumeTopActivityUncheckedLocked(target, targetOptions); + } else if (targetStack == null && !display.hasChild()) { + result |= resumeHomeActivity(null /* prev */, "empty-display", + display.mDisplayId); } } } |