summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xservices/core/java/com/android/server/am/ActivityManagerService.java16
-rwxr-xr-xservices/core/java/com/android/server/am/ActivityStack.java2
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,