Look for recent tasks in live stacks.
It is possible for a tasks not to have been saved to the persisted recent list yet for various reasons. This causes some external calls to fail when they are trying to do an operation on a task with a given id. We now use the stack supervisor look-up for a task id that checks everywhere a task might be including live stack. It this fails then the task truly doesn't exist. Bug: 22924782 Change-Id: I57c3df41d0b4f3ee3c5ae9b7d01eeb2b352062b4
This commit is contained in:
@@ -4118,7 +4118,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
final Intent intent;
|
final Intent intent;
|
||||||
final int userId;
|
final int userId;
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
task = mRecentTasks.taskForIdLocked(taskId);
|
task = mStackSupervisor.anyTaskForIdLocked(taskId);
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
throw new IllegalArgumentException("Task " + taskId + " not found.");
|
throw new IllegalArgumentException("Task " + taskId + " not found.");
|
||||||
}
|
}
|
||||||
@@ -8805,7 +8805,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
final long origId = Binder.clearCallingIdentity();
|
final long origId = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
int taskId = ActivityRecord.getTaskForActivityLocked(token, !nonRoot);
|
int taskId = ActivityRecord.getTaskForActivityLocked(token, !nonRoot);
|
||||||
final TaskRecord task = mRecentTasks.taskForIdLocked(taskId);
|
final TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId);
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
if (mStackSupervisor.isLockedTask(task)) {
|
if (mStackSupervisor.isLockedTask(task)) {
|
||||||
mStackSupervisor.showLockTaskToast();
|
mStackSupervisor.showLockTaskToast();
|
||||||
@@ -20573,7 +20573,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
synchronized (ActivityManagerService.this) {
|
synchronized (ActivityManagerService.this) {
|
||||||
long origId = Binder.clearCallingIdentity();
|
long origId = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
TaskRecord tr = mRecentTasks.taskForIdLocked(mTaskId);
|
TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(mTaskId);
|
||||||
if (tr == null) {
|
if (tr == null) {
|
||||||
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
|
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
|
||||||
}
|
}
|
||||||
@@ -20600,7 +20600,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
TaskRecord tr;
|
TaskRecord tr;
|
||||||
IApplicationThread appThread;
|
IApplicationThread appThread;
|
||||||
synchronized (ActivityManagerService.this) {
|
synchronized (ActivityManagerService.this) {
|
||||||
tr = mRecentTasks.taskForIdLocked(mTaskId);
|
tr = mStackSupervisor.anyTaskForIdLocked(mTaskId);
|
||||||
if (tr == null) {
|
if (tr == null) {
|
||||||
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
|
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
|
||||||
}
|
}
|
||||||
@@ -20621,7 +20621,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
synchronized (ActivityManagerService.this) {
|
synchronized (ActivityManagerService.this) {
|
||||||
long origId = Binder.clearCallingIdentity();
|
long origId = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
TaskRecord tr = mRecentTasks.taskForIdLocked(mTaskId);
|
TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(mTaskId);
|
||||||
if (tr == null) {
|
if (tr == null) {
|
||||||
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
|
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user