|
138 | 138 | import java.lang.IllegalStateException; |
139 | 139 | import java.lang.ref.WeakReference; |
140 | 140 | import java.util.ArrayList; |
| 141 | +import java.util.Arrays; |
141 | 142 | import java.util.Collection; |
142 | 143 | import java.util.Collections; |
143 | 144 | import java.util.Comparator; |
@@ -3520,13 +3521,7 @@ private final void handleAppDiedLocked(ProcessRecord app, |
3520 | 3521 | } |
3521 | 3522 |
|
3522 | 3523 | // 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); |
3530 | 3525 |
|
3531 | 3526 | // Remove this application's activities from active lists. |
3532 | 3527 | mMainStack.removeHistoryRecordsForAppLocked(app); |
@@ -7231,7 +7226,7 @@ public boolean shutdown(int timeout) { |
7231 | 7226 | mMainStack.stopIfSleepingLocked(); |
7232 | 7227 | final long endTime = System.currentTimeMillis() + timeout; |
7233 | 7228 | while (mMainStack.mResumedActivity != null |
7234 | | - || mMainStack.mPausingActivity != null) { |
| 7229 | + || mMainStack.mPausingActivities.size() > 0) { |
7235 | 7230 | long delay = endTime - System.currentTimeMillis(); |
7236 | 7231 | if (delay <= 0) { |
7237 | 7232 | Slog.w(TAG, "Activity manager shutdown timed out"); |
@@ -9025,8 +9020,13 @@ boolean dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, String[] args, |
9025 | 9020 | } |
9026 | 9021 |
|
9027 | 9022 | 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())); |
9030 | 9030 | } |
9031 | 9031 | pw.println(" mResumedActivity: " + mMainStack.mResumedActivity); |
9032 | 9032 | pw.println(" mFocusedActivity: " + mFocusedActivity); |
@@ -14759,7 +14759,13 @@ private final boolean updateOomAdjLocked( |
14759 | 14759 | private final ActivityRecord resumedAppLocked() { |
14760 | 14760 | ActivityRecord resumedActivity = mMainStack.mResumedActivity; |
14761 | 14761 | 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 | + } |
14763 | 14769 | if (resumedActivity == null || resumedActivity.app == null) { |
14764 | 14770 | resumedActivity = mMainStack.topRunningActivityLocked(null); |
14765 | 14771 | } |
|
0 commit comments