diff options
author | Craig Mautner <cmautner@google.com> | 2015-01-13 22:05:27 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-01-13 22:05:27 +0000 |
commit | 1549346a98227c1f41fa4bd99921139f2cf97a14 (patch) | |
tree | f85671495f25ae2b47435b7e9876464eca70c109 | |
parent | 9d82182f0c97271323d039b51e9179d2f4f2fa74 (diff) | |
parent | 82da2ee927a86114f583b2ea8683076069e761e0 (diff) | |
download | frameworks_base-1549346a98227c1f41fa4bd99921139f2cf97a14.zip frameworks_base-1549346a98227c1f41fa4bd99921139f2cf97a14.tar.gz frameworks_base-1549346a98227c1f41fa4bd99921139f2cf97a14.tar.bz2 |
am ef04ae79: Merge "Complete booting when frontmost activity is idle" into lmp-mr1-dev
automerge: 82da2ee
* commit '82da2ee927a86114f583b2ea8683076069e761e0':
Complete booting when frontmost activity is idle
-rw-r--r-- | services/core/java/com/android/server/am/ActivityStackSupervisor.java | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 19252ee..b81df9e 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -414,6 +414,12 @@ public final class ActivityStackSupervisor implements DisplayListener { if (DEBUG_STACK) Slog.d(TAG, "moveHomeTask: topStack old=" + topStack + " new=" + mFocusedStack); } + if (mService.mBooting || !mService.mBooted) { + final ActivityRecord r = topRunningActivityLocked(); + if (r != null && r.idle) { + checkFinishBootingLocked(); + } + } } void moveHomeStackTaskToTop(int homeStackTaskType) { @@ -2235,6 +2241,24 @@ public final class ActivityStackSupervisor implements DisplayListener { } } + /** + * Called when the frontmost task is idle. + * @return the state of mService.mBooting before this was called. + */ + private boolean checkFinishBootingLocked() { + final boolean booting = mService.mBooting; + boolean enableScreen = false; + mService.mBooting = false; + if (!mService.mBooted) { + mService.mBooted = true; + enableScreen = true; + } + if (booting || enableScreen) { + mService.postFinishBooting(booting, enableScreen); + } + return booting; + } + // Checked. final ActivityRecord activityIdleInternalLocked(final IBinder token, boolean fromTimeout, Configuration config) { @@ -2246,7 +2270,6 @@ public final class ActivityStackSupervisor implements DisplayListener { int NS = 0; int NF = 0; boolean booting = false; - boolean enableScreen = false; boolean activityRemoved = false; ActivityRecord r = ActivityRecord.forToken(token); @@ -2274,12 +2297,7 @@ public final class ActivityStackSupervisor implements DisplayListener { //Slog.i(TAG, "IDLE: mBooted=" + mBooted + ", fromTimeout=" + fromTimeout); if (isFrontStack(r.task.stack) || fromTimeout) { - booting = mService.mBooting; - mService.mBooting = false; - if (!mService.mBooted) { - mService.mBooted = true; - enableScreen = true; - } + booting = checkFinishBootingLocked(); } } @@ -2352,10 +2370,6 @@ public final class ActivityStackSupervisor implements DisplayListener { //dump(); //mWindowManager.dump(); - if (booting || enableScreen) { - mService.postFinishBooting(booting, enableScreen); - } - if (activityRemoved) { resumeTopActivitiesLocked(); } @@ -2624,6 +2638,8 @@ public final class ActivityStackSupervisor implements DisplayListener { // before an application stack is created...Go ahead and create one on the default // display. stack = getStack(createStackOnDisplay(getNextStackId(), Display.DEFAULT_DISPLAY)); + // Restore home stack to top. + moveHomeStack(true); if (DEBUG_RECENTS) Slog.v(TAG, "Created stack=" + stack + " for recents restoration."); } |