Fix various crashes from a destroy-timeout activity
This prevents below 3 cases that caused by using the
removed token to server side:
Block at | From method | Exception
-----------------------------------------------------
onCreate | reportSizeConfigurations | IllegalArgument
onStart | isTopOfTask | IllegalArgument
onResume | addView | BadToken
Bug: 109718716
Test: atest CtsActivityManagerDeviceTestCases:ActivityLifecycleTests
Test: Sample app in bug link.
Change-Id: I123a048c36f7ddbca0d5b1bf8060c3a4dd13a903
diff --git a/services/core/java/com/android/server/am/ActivityTaskManagerService.java b/services/core/java/com/android/server/am/ActivityTaskManagerService.java
index 10e0182..3211afb 100644
--- a/services/core/java/com/android/server/am/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityTaskManagerService.java
@@ -2395,10 +2395,7 @@
public boolean isTopOfTask(IBinder token) {
synchronized (mGlobalLock) {
ActivityRecord r = ActivityRecord.isInStackLocked(token);
- if (r == null) {
- throw new IllegalArgumentException();
- }
- return r.getTask().getTopActivity() == r;
+ return r != null && r.getTask().getTopActivity() == r;
}
}