diff options
| author | 2018-01-23 16:18:32 -0800 | |
|---|---|---|
| committer | 2018-01-25 17:10:28 -0800 | |
| commit | 886e7fed9e1b5a5d8a3b0e19375bbf00fabf7035 (patch) | |
| tree | df83c8108f4d251b7c56b76118b65c487eaa00a3 | |
| parent | 7b9a2c760f8b0ac68dfc258659a9a13eff0ac9ef (diff) | |
Perform Activity#onStart when launching in LocalActivityManager.
We move to the start state when launching a tabbed activity through
LocalActivityManager, but currently do not inform the activity
thread due to changes in how ActivityThread is updated through the
ActivityLifecycler. This changelist addresses this issue.
Change-Id: Ibc2bda39617e1741bb3ee8637a182dc9f14dd61d
Fixes: 70813462
Fixes: 70812753
Test: atest CtsAppTestCases:android.app.cts.LifecycleTest
Test: atest LocalActivityManagerTest
Test: atest ActivityGroupTest
| -rw-r--r-- | core/java/android/app/LocalActivityManager.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/core/java/android/app/LocalActivityManager.java b/core/java/android/app/LocalActivityManager.java index 998ac5f2a487..c34f4d9f0fe8 100644 --- a/core/java/android/app/LocalActivityManager.java +++ b/core/java/android/app/LocalActivityManager.java @@ -16,6 +16,8 @@ package android.app; +import android.app.ActivityThread.ActivityClientRecord; +import android.app.servertransaction.PendingTransactionActions; import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Binder; @@ -141,6 +143,21 @@ public class LocalActivityManager { } r.window = r.activity.getWindow(); r.instanceState = null; + + final ActivityClientRecord clientRecord = mActivityThread.getActivityClient(r); + final PendingTransactionActions pendingActions; + + if (!r.activity.mFinished) { + // This matches pending actions set in ActivityThread#handleLaunchActivity + pendingActions = new PendingTransactionActions(); + pendingActions.setOldState(clientRecord.state); + pendingActions.setRestoreInstanceState(true); + pendingActions.setCallOnPostCreate(true); + } else { + pendingActions = null; + } + + mActivityThread.handleStartActivity(clientRecord, pendingActions); r.curState = STARTED; if (desiredState == RESUMED) { |