diff options
| author | 2019-03-17 01:02:11 +0000 | |
|---|---|---|
| committer | 2019-03-17 01:02:11 +0000 | |
| commit | b3e900902aa5e55ae27beb587223be9af9f7890a (patch) | |
| tree | fa68e25b7d4658fe30960358d2be694913df97aa | |
| parent | 2df78c38f8a9815338f7ab553d75ab6148886d43 (diff) | |
| parent | f2d598e1684a8b3ed793611f878fafc4f126e1ea (diff) | |
Merge "Allow transitioning through lifecycle when finished"
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 08239a1e7ed9..c0a702f28b8d 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -3115,10 +3115,6 @@ public final class ActivityThread extends ClientTransactionHandler { if (!r.stopped) { throw new IllegalStateException("Can't start activity that is not stopped."); } - if (r.activity.mFinished) { - // TODO(lifecycler): How can this happen? - return; - } // Start activity.performStart("handleStartActivity"); @@ -3241,6 +3237,8 @@ public final class ActivityThread extends ClientTransactionHandler { if (!r.activity.mFinished && pendingActions != null) { pendingActions.setOldState(r.state); pendingActions.setRestoreInstanceState(true); + } + if (pendingActions != null) { pendingActions.setCallOnPostCreate(true); } } else { @@ -3942,7 +3940,7 @@ public final class ActivityThread extends ClientTransactionHandler { if (localLOGV) { Slog.v(TAG, "Performing resume of " + r + " finished=" + r.activity.mFinished); } - if (r == null || r.activity.mFinished) { + if (r == null) { return null; } if (r.getLifecycleState() == ON_RESUME) { @@ -4212,12 +4210,6 @@ public final class ActivityThread extends ClientTransactionHandler { private Bundle performPauseActivity(ActivityClientRecord r, boolean finished, String reason, PendingTransactionActions pendingActions) { if (r.paused) { - if (r.activity.mFinished) { - // If we are finishing, we won't call onResume() in certain cases. - // So here we likewise don't want to call onPause() if the activity - // isn't resumed. - return null; - } RuntimeException e = new RuntimeException( "Performing pause of activity that is not resumed: " + r.intent.getComponent().toShortString()); @@ -4337,20 +4329,13 @@ public final class ActivityThread extends ClientTransactionHandler { boolean saveState, boolean finalStateRequest, String reason) { if (localLOGV) Slog.v(TAG, "Performing stop of " + r); if (r != null) { - if (!keepShown && r.stopped) { - if (r.activity.mFinished) { - // If we are finishing, we won't call onResume() in certain - // cases. So here we likewise don't want to call onStop() - // if the activity isn't resumed. - return; - } - if (!finalStateRequest) { - final RuntimeException e = new RuntimeException( - "Performing stop of activity that is already stopped: " - + r.intent.getComponent().toShortString()); - Slog.e(TAG, e.getMessage(), e); - Slog.e(TAG, r.getStateString()); - } + if (!keepShown && r.stopped && !finalStateRequest) { + // Double stop request is possible if activity receives 'sleep' followed by 'stop'. + final RuntimeException e = new RuntimeException( + "Performing stop of activity that is already stopped: " + + r.intent.getComponent().toShortString()); + Slog.e(TAG, e.getMessage(), e); + Slog.e(TAG, r.getStateString()); } // One must first be paused before stopped... |