diff options
author | Craig Mautner <cmautner@google.com> | 2015-01-13 21:28:34 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-01-13 21:28:37 +0000 |
commit | ef04ae79af58cc86c4312fac18c8a4eb24fc73ae (patch) | |
tree | 9f2535e5a438a0ade35dba42faca1e1c73528ba5 | |
parent | 31ae17309e8c79c4b1a7b63a9c4bb43ae0849de2 (diff) | |
parent | f3ea23ad9bcd44bdbc8380c413989fc887b89cc8 (diff) | |
download | frameworks_base-ef04ae79af58cc86c4312fac18c8a4eb24fc73ae.zip frameworks_base-ef04ae79af58cc86c4312fac18c8a4eb24fc73ae.tar.gz frameworks_base-ef04ae79af58cc86c4312fac18c8a4eb24fc73ae.tar.bz2 |
Merge "Complete booting when frontmost activity is idle" into lmp-mr1-dev
-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."); } |