summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java13
-rw-r--r--services/core/java/com/android/server/wm/ActivityStack.java2
2 files changed, 9 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 6ac41baefa4a..e08e1ff01348 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -863,7 +863,7 @@ final class ActivityRecord extends ConfigurationContainer {
name = intent.getComponent().flattenToShortString();
}
- private static ActivityRecord tokenToActivityRecordLocked(Token token) {
+ private static @Nullable ActivityRecord tokenToActivityRecordLocked(Token token) {
if (token == null) {
return null;
}
@@ -891,7 +891,7 @@ final class ActivityRecord extends ConfigurationContainer {
}
}
- static ActivityRecord forTokenLocked(IBinder token) {
+ static @Nullable ActivityRecord forTokenLocked(IBinder token) {
try {
return Token.tokenToActivityRecordLocked((Token)token);
} catch (ClassCastException e) {
@@ -2127,10 +2127,13 @@ final class ActivityRecord extends ConfigurationContainer {
static void activityResumedLocked(IBinder token) {
final ActivityRecord r = ActivityRecord.forTokenLocked(token);
if (DEBUG_SAVED_STATE) Slog.i(TAG_STATES, "Resumed activity; dropping state of: " + r);
- if (r != null) {
- r.icicle = null;
- r.haveState = false;
+ if (r == null) {
+ // If an app reports resumed after a long delay, the record on server side might have
+ // been removed (e.g. destroy timeout), so the token could be null.
+ return;
}
+ r.icicle = null;
+ r.haveState = false;
final ActivityDisplay display = r.getDisplay();
if (display != null) {
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index e0890a6fe17f..fad4dbd5613b 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -1804,7 +1804,7 @@ class ActivityStack extends ConfigurationContainer {
if (prev.finishing) {
if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Executing finish of activity: " + prev);
prev = finishCurrentActivityLocked(prev, FINISH_AFTER_VISIBLE, false,
- "completedPausedLocked");
+ "completePausedLocked");
} else if (prev.hasProcess()) {
if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Enqueue pending stop if needed: " + prev
+ " wasStopping=" + wasStopping + " visible=" + prev.visible);