Loading core/java/android/app/ActivityThread.java +7 −26 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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{" Loading Loading @@ -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; Loading Loading @@ -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); } } Loading core/java/android/app/servertransaction/TransactionExecutorHelper.java +3 −24 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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: Loading @@ -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; } Loading @@ -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. Loading Loading
core/java/android/app/ActivityThread.java +7 −26 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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{" Loading Loading @@ -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; Loading Loading @@ -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); } } Loading
core/java/android/app/servertransaction/TransactionExecutorHelper.java +3 −24 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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: Loading @@ -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; } Loading @@ -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. Loading