Merge "Revert "Use transaction for local activity relaunch"" into pi-dev
am: 603b911e48
Change-Id: I9443d43e9758916eb2ec6721c1ca9992bd7b9d87
This commit is contained in:
@@ -30,15 +30,12 @@ import android.annotation.Nullable;
|
||||
import android.app.assist.AssistContent;
|
||||
import android.app.assist.AssistStructure;
|
||||
import android.app.backup.BackupAgent;
|
||||
import android.app.servertransaction.ActivityLifecycleItem;
|
||||
import android.app.servertransaction.ActivityLifecycleItem.LifecycleState;
|
||||
import android.app.servertransaction.ActivityRelaunchItem;
|
||||
import android.app.servertransaction.ActivityResultItem;
|
||||
import android.app.servertransaction.ClientTransaction;
|
||||
import android.app.servertransaction.PendingTransactionActions;
|
||||
import android.app.servertransaction.PendingTransactionActions.StopInfo;
|
||||
import android.app.servertransaction.TransactionExecutor;
|
||||
import android.app.servertransaction.TransactionExecutorHelper;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentCallbacks2;
|
||||
import android.content.ComponentName;
|
||||
@@ -523,10 +520,6 @@ public final class ActivityThread extends ClientTransactionHandler {
|
||||
return activityInfo.persistableMode == ActivityInfo.PERSIST_ACROSS_REBOOTS;
|
||||
}
|
||||
|
||||
public boolean isVisibleFromServer() {
|
||||
return activity != null && activity.mVisibleFromServer;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
ComponentName componentName = intent != null ? intent.getComponent() : null;
|
||||
return "ActivityRecord{"
|
||||
@@ -1804,7 +1797,6 @@ public final class ActivityThread extends ClientTransactionHandler {
|
||||
// message is handled.
|
||||
transaction.recycle();
|
||||
}
|
||||
// TODO(lifecycler): Recycle locally scheduled transactions.
|
||||
break;
|
||||
}
|
||||
Object obj = msg.obj;
|
||||
@@ -4731,25 +4723,14 @@ public final class ActivityThread extends ClientTransactionHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO(b/73747058): Investigate converting this to use transaction to relaunch.
|
||||
handleRelaunchActivityInner(r, 0 /* configChanges */, null /* pendingResults */,
|
||||
null /* pendingIntents */, null /* pendingActions */, prevState != ON_RESUME,
|
||||
r.overrideConfig, "handleRelaunchActivityLocally");
|
||||
|
||||
// Initialize a relaunch request.
|
||||
final MergedConfiguration mergedConfiguration = new MergedConfiguration(
|
||||
r.createdConfig != null ? r.createdConfig : mConfiguration,
|
||||
r.overrideConfig);
|
||||
final ActivityRelaunchItem activityRelaunchItem = ActivityRelaunchItem.obtain(
|
||||
null /* pendingResults */, null /* pendingIntents */, 0 /* configChanges */,
|
||||
mergedConfiguration, r.mPreserveWindow);
|
||||
// Make sure to match the existing lifecycle state in the end of the transaction.
|
||||
final ActivityLifecycleItem lifecycleRequest =
|
||||
TransactionExecutorHelper.getLifecycleRequestForCurrentState(r);
|
||||
// Schedule the transaction.
|
||||
final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token);
|
||||
transaction.addCallback(activityRelaunchItem);
|
||||
transaction.setLifecycleStateRequest(lifecycleRequest);
|
||||
try {
|
||||
mAppThread.scheduleTransaction(transaction);
|
||||
} catch (RemoteException e) {
|
||||
// Local scheduling
|
||||
// Restore back to the previous state before relaunch if needed.
|
||||
if (prevState != r.getLifecycleState()) {
|
||||
mTransactionExecutor.cycleToPath(r, prevState);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ import static android.app.servertransaction.ActivityLifecycleItem.ON_STOP;
|
||||
import static android.app.servertransaction.ActivityLifecycleItem.PRE_ON_CREATE;
|
||||
import static android.app.servertransaction.ActivityLifecycleItem.UNDEFINED;
|
||||
|
||||
import android.app.ActivityThread.ActivityClientRecord;
|
||||
import android.app.ActivityThread;
|
||||
import android.util.IntArray;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
@@ -124,7 +124,7 @@ public class TransactionExecutorHelper {
|
||||
* {@link ActivityLifecycleItem#UNDEFINED} if there is not path.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
public int getClosestPreExecutionState(ActivityClientRecord r,
|
||||
public int getClosestPreExecutionState(ActivityThread.ActivityClientRecord r,
|
||||
int postExecutionState) {
|
||||
switch (postExecutionState) {
|
||||
case UNDEFINED:
|
||||
@@ -147,7 +147,7 @@ public class TransactionExecutorHelper {
|
||||
* were provided or there is not path.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
public int getClosestOfStates(ActivityClientRecord r, int[] finalStates) {
|
||||
public int getClosestOfStates(ActivityThread.ActivityClientRecord r, int[] finalStates) {
|
||||
if (finalStates == null || finalStates.length == 0) {
|
||||
return UNDEFINED;
|
||||
}
|
||||
@@ -168,27 +168,6 @@ public class TransactionExecutorHelper {
|
||||
return closestState;
|
||||
}
|
||||
|
||||
/** Get the lifecycle state request to match the current state in the end of a transaction. */
|
||||
public static ActivityLifecycleItem getLifecycleRequestForCurrentState(ActivityClientRecord r) {
|
||||
final int prevState = r.getLifecycleState();
|
||||
final ActivityLifecycleItem lifecycleItem;
|
||||
switch (prevState) {
|
||||
// TODO(lifecycler): Extend to support all possible states.
|
||||
case ON_PAUSE:
|
||||
lifecycleItem = PauseActivityItem.obtain();
|
||||
break;
|
||||
case ON_STOP:
|
||||
lifecycleItem = StopActivityItem.obtain(r.isVisibleFromServer(),
|
||||
0 /* configChanges */);
|
||||
break;
|
||||
default:
|
||||
lifecycleItem = ResumeActivityItem.obtain(false /* isForward */);
|
||||
break;
|
||||
}
|
||||
|
||||
return lifecycleItem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if there is a destruction involved in the path. We want to avoid a lifecycle sequence
|
||||
* that involves destruction and recreation if there is another path.
|
||||
|
||||
Reference in New Issue
Block a user