Skip to content

Commit f6a7e1f

Browse files
Dianne HackbornAndroid (Google) Code Review
authored andcommitted
Merge "Don't wait for current activity to pause before resuming next."
2 parents e1a409b + cbb722e commit f6a7e1f

File tree

3 files changed

+139
-88
lines changed

3 files changed

+139
-88
lines changed

services/java/com/android/server/am/ActivityManagerService.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@
138138
import java.lang.IllegalStateException;
139139
import java.lang.ref.WeakReference;
140140
import java.util.ArrayList;
141+
import java.util.Arrays;
141142
import java.util.Collection;
142143
import java.util.Collections;
143144
import java.util.Comparator;
@@ -3520,13 +3521,7 @@ private final void handleAppDiedLocked(ProcessRecord app,
35203521
}
35213522

35223523
// Just in case...
3523-
if (mMainStack.mPausingActivity != null && mMainStack.mPausingActivity.app == app) {
3524-
if (DEBUG_PAUSE) Slog.v(TAG, "App died while pausing: " +mMainStack.mPausingActivity);
3525-
mMainStack.mPausingActivity = null;
3526-
}
3527-
if (mMainStack.mLastPausedActivity != null && mMainStack.mLastPausedActivity.app == app) {
3528-
mMainStack.mLastPausedActivity = null;
3529-
}
3524+
mMainStack.appDiedLocked(app);
35303525

35313526
// Remove this application's activities from active lists.
35323527
mMainStack.removeHistoryRecordsForAppLocked(app);
@@ -7231,7 +7226,7 @@ public boolean shutdown(int timeout) {
72317226
mMainStack.stopIfSleepingLocked();
72327227
final long endTime = System.currentTimeMillis() + timeout;
72337228
while (mMainStack.mResumedActivity != null
7234-
|| mMainStack.mPausingActivity != null) {
7229+
|| mMainStack.mPausingActivities.size() > 0) {
72357230
long delay = endTime - System.currentTimeMillis();
72367231
if (delay <= 0) {
72377232
Slog.w(TAG, "Activity manager shutdown timed out");
@@ -9025,8 +9020,13 @@ boolean dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, String[] args,
90259020
}
90269021

90279022
pw.println(" ");
9028-
if (mMainStack.mPausingActivity != null) {
9029-
pw.println(" mPausingActivity: " + mMainStack.mPausingActivity);
9023+
if (mMainStack.mPausingActivities.size() > 0) {
9024+
pw.println(" mPausingActivities: " + Arrays.toString(
9025+
mMainStack.mPausingActivities.toArray()));
9026+
}
9027+
if (mMainStack.mInputPausedActivities.size() > 0) {
9028+
pw.println(" mInputPausedActivities: " + Arrays.toString(
9029+
mMainStack.mInputPausedActivities.toArray()));
90309030
}
90319031
pw.println(" mResumedActivity: " + mMainStack.mResumedActivity);
90329032
pw.println(" mFocusedActivity: " + mFocusedActivity);
@@ -14759,7 +14759,13 @@ private final boolean updateOomAdjLocked(
1475914759
private final ActivityRecord resumedAppLocked() {
1476014760
ActivityRecord resumedActivity = mMainStack.mResumedActivity;
1476114761
if (resumedActivity == null || resumedActivity.app == null) {
14762-
resumedActivity = mMainStack.mPausingActivity;
14762+
for (int i=mMainStack.mPausingActivities.size()-1; i>=0; i--) {
14763+
ActivityRecord r = mMainStack.mPausingActivities.get(i);
14764+
if (r.app != null) {
14765+
resumedActivity = r;
14766+
break;
14767+
}
14768+
}
1476314769
if (resumedActivity == null || resumedActivity.app == null) {
1476414770
resumedActivity = mMainStack.topRunningActivityLocked(null);
1476514771
}

services/java/com/android/server/am/ActivityRecord.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,7 @@ public void stopFreezingScreenLocked(boolean force) {
602602

603603
public void windowsDrawn() {
604604
synchronized(service) {
605+
stack.reportActivityDrawnLocked(this);
605606
if (launchTime != 0) {
606607
final long curTime = SystemClock.uptimeMillis();
607608
final long thisTime = curTime - launchTime;
@@ -690,7 +691,9 @@ private ActivityRecord getWaitingHistoryRecordLocked() {
690691
// Hmmm, who might we be waiting for?
691692
r = stack.mResumedActivity;
692693
if (r == null) {
693-
r = stack.mPausingActivity;
694+
if (stack.mPausingActivities.size() > 0) {
695+
r = stack.mPausingActivities.get(stack.mPausingActivities.size()-1);
696+
}
694697
}
695698
// Both of those null? Fall back to 'this' again
696699
if (r == null) {

0 commit comments

Comments
 (0)