summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrii Kulian <akulian@google.com> 2019-03-21 19:01:57 -0700
committer Andrii Kulian <akulian@google.com> 2019-04-04 18:27:16 +0000
commit49dc798e43960ec8735de73e47b8c40b42c2a368 (patch)
tree98c7e478686371df7d4cbee4281cb387b13951c4
parentdd07ae579c291a2b6ffe09bd576fd908eb9e5ddd (diff)
Fix extra onStop when finishing after onCreate
Sometimes onStop was called after finishing activity in onCreate. This is unexpected, as in this case the state should transition directly to onDestroy. One possible cause is getting a window visibility change to visible state before request for destruction from server. Such window visibility change would not trigger any callbacks on its own, but could set the state of client record to ON_START. Then when the following destruction request comes, it causes the activity to stop by looking at its previous "started" state. This CL does not allow transitioning to started state while doing window visibility update if activity wasn't stopped before. Bug: 127106719 Test: ActivityThreadTest Change-Id: I0239e02e4cdb335e2fbbc3b8817278e40bbcea1c
-rw-r--r--core/java/android/app/ActivityThread.java2
1 files changed, 1 insertions, 1 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 38006dc5b943..92e20bd5472e 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -4521,7 +4521,7 @@ public final class ActivityThread extends ClientTransactionHandler {
if (!show && !r.stopped) {
performStopActivityInner(r, null /* stopInfo */, show, false /* saveState */,
false /* finalStateRequest */, "handleWindowVisibility");
- } else if (show && r.stopped) {
+ } else if (show && r.getLifecycleState() == ON_STOP) {
// If we are getting ready to gc after going to the background, well
// we are back active so skip it.
unscheduleGcIdler();