diff options
| author | 2019-03-21 19:01:57 -0700 | |
|---|---|---|
| committer | 2019-04-04 18:27:16 +0000 | |
| commit | 49dc798e43960ec8735de73e47b8c40b42c2a368 (patch) | |
| tree | 98c7e478686371df7d4cbee4281cb387b13951c4 | |
| parent | dd07ae579c291a2b6ffe09bd576fd908eb9e5ddd (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.java | 2 |
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(); |