diff options
| -rwxr-xr-x | services/core/java/com/android/server/am/ActivityManagerService.java | 16 | ||||
| -rwxr-xr-x | services/core/java/com/android/server/am/ActivityStack.java | 2 |
2 files changed, 14 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 1cf96c33a077..682642e0199c 100755 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -8160,6 +8160,16 @@ public final class ActivityManagerService extends ActivityManagerNative } } + private TaskRecord taskForIdLocked(int id) { + final TaskRecord task = recentTaskForIdLocked(id); + if (task != null) { + return task; + } + + // Don't give up. Sometimes it just hasn't made it to recents yet. + return mStackSupervisor.anyTaskForIdLocked(id); + } + private TaskRecord recentTaskForIdLocked(int id) { final int N = mRecentTasks.size(); for (int i=0; i<N; i++) { @@ -8380,7 +8390,7 @@ public final class ActivityManagerService extends ActivityManagerNative * @return Returns true if the given task was found and removed. */ private boolean removeTaskByIdLocked(int taskId, boolean killProcess) { - TaskRecord tr = recentTaskForIdLocked(taskId); + TaskRecord tr = taskForIdLocked(taskId); if (tr != null) { tr.removeTaskActivitiesLocked(); cleanUpRemovedTaskLocked(tr, killProcess); @@ -8455,7 +8465,7 @@ public final class ActivityManagerService extends ActivityManagerNative "moveTaskToBack()"); synchronized(this) { - TaskRecord tr = recentTaskForIdLocked(taskId); + TaskRecord tr = taskForIdLocked(taskId); if (tr != null) { if (tr == mStackSupervisor.mLockTaskModeTask) { mStackSupervisor.showLockTaskToast(); @@ -8647,7 +8657,7 @@ public final class ActivityManagerService extends ActivityManagerNative long ident = Binder.clearCallingIdentity(); try { synchronized (this) { - TaskRecord tr = recentTaskForIdLocked(taskId); + TaskRecord tr = taskForIdLocked(taskId); return tr != null && tr.stack != null && tr.stack.isHomeStack(); } } finally { diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index b955011bc3b2..0f404d6ae2fd 100755 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1642,8 +1642,8 @@ final class ActivityStack { boolean dontWaitForPause = (next.info.flags&ActivityInfo.FLAG_RESUME_WHILE_PAUSING) != 0; boolean pausing = mStackSupervisor.pauseBackStacks(userLeaving, true, dontWaitForPause); if (mResumedActivity != null) { - pausing |= startPausingLocked(userLeaving, false, true, dontWaitForPause); if (DEBUG_STATES) Slog.d(TAG, "resumeTopActivityLocked: Pausing " + mResumedActivity); + pausing |= startPausingLocked(userLeaving, false, true, dontWaitForPause); } if (pausing) { if (DEBUG_SWITCH || DEBUG_STATES) Slog.v(TAG, |