summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2019-11-12 21:31:52 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-11-12 21:31:52 +0000
commitc2c33d4e938f30076d46364e2a55237cdd9079f4 (patch)
treeaf6a22a69520ab041cc590884cd5ace37d89ff05
parentd1da43b5143d4bd85587d7d97bd990c293ad2a46 (diff)
parenta0175abdda521ed1233882dedabd35d98fc667b2 (diff)
Merge "Defer resuming when creating home stack for starting home"
-rw-r--r--services/core/java/com/android/server/wm/ActivityStartController.java14
-rw-r--r--services/core/java/com/android/server/wm/RootActivityContainer.java3
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);
}
}
}