summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Bryce Lee <brycelee@google.com> 2018-01-23 16:18:32 -0800
committer Bryce Lee <brycelee@google.com> 2018-01-25 17:10:28 -0800
commit886e7fed9e1b5a5d8a3b0e19375bbf00fabf7035 (patch)
treedf83c8108f4d251b7c56b76118b65c487eaa00a3
parent7b9a2c760f8b0ac68dfc258659a9a13eff0ac9ef (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.java17
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) {