Loading core/java/android/app/ActivityClient.java +9 −4 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.os.UserHandle.getCallingUserId; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.app.HandoffActivityData; import android.content.ComponentName; import android.content.ContentProvider; import android.content.Intent; Loading Loading @@ -95,9 +96,13 @@ public class ActivityClient { /** Reports {@link Activity#onStop()} is done. */ public void activityStopped(IBinder token, Bundle state, PersistableBundle persistentState, CharSequence description) { HandoffActivityData handoffActivityData, CharSequence description) { try { getActivityClientController().activityStopped(token, state, persistentState, getActivityClientController().activityStopped( token, state, persistentState, handoffActivityData, description); } catch (RemoteException e) { e.rethrowFromSystemServer(); Loading core/java/android/app/ActivityThread.java +12 −0 Original line number Diff line number Diff line Loading @@ -648,6 +648,7 @@ public final class ActivityThread extends ClientTransactionHandler boolean hideForNow; Configuration createdConfig; Configuration overrideConfig; HandoffActivityData handoffActivityData; @NonNull private final ActivityWindowInfo mActivityWindowInfo = new ActivityWindowInfo(); @NonNull Loading Loading @@ -6311,6 +6312,10 @@ public final class ActivityThread extends ClientTransactionHandler stopInfo.setActivity(r); stopInfo.setState(r.state); stopInfo.setPersistentState(r.persistentState); if (android.companion.Flags.enableTaskContinuity()) { stopInfo.setHandoffActivityData(r.handoffActivityData); } pendingActions.setStopInfo(stopInfo); mSomeActivitiesChanged = true; } Loading Loading @@ -6851,6 +6856,13 @@ public final class ActivityThread extends ClientTransactionHandler private void callActivityOnSaveInstanceState(ActivityClientRecord r) { r.state = new Bundle(); r.state.setAllowFds(false); if (android.companion.Flags.enableTaskContinuity() && r.activity.isHandoffEnabled()) { final HandoffActivityDataRequestInfo requestInfo = new HandoffActivityDataRequestInfo(false /* isActiveRequest */); r.handoffActivityData = r.activity.onHandoffActivityDataRequested(requestInfo); } if (r.isPersistable()) { r.persistentState = new PersistableBundle(); mInstrumentation.callActivityOnSaveInstanceState(r.activity, r.state, Loading core/java/android/app/HandoffFailureCode.java +4 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,8 @@ public final class HandoffFailureCode { HANDOFF_FAILURE_UNKNOWN_TASK, HANDOFF_FAILURE_INTERNAL_ERROR, HANDOFF_FAILURE_EMPTY_TASK, HANDOFF_FAILURE_UNSUPPORTED_TASK HANDOFF_FAILURE_UNSUPPORTED_TASK, HANDOFF_FAILURE_APP_DID_NOT_REPORT_HANDOFF_DATA, }) @Retention(RetentionPolicy.SOURCE) public @interface FailureCode {} Loading @@ -53,4 +54,6 @@ public final class HandoffFailureCode { public static final int HANDOFF_FAILURE_EMPTY_TASK = 5; /** The handoff task data request was for a task whose top activity does not support handoff. */ public static final int HANDOFF_FAILURE_UNSUPPORTED_TASK = 6; /** Handoff task data was not reported by the app, despite the app supporting handoff. */ public static final int HANDOFF_FAILURE_APP_DID_NOT_REPORT_HANDOFF_DATA = 7; } No newline at end of file core/java/android/app/IActivityClientController.aidl +7 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app; import android.app.ActivityManager; import android.app.HandoffActivityData; import android.app.IRequestFinishCallback; import android.app.PictureInPictureParams; import android.content.ComponentName; Loading Loading @@ -52,8 +53,12 @@ interface IActivityClientController { * there won't be other lifecycle changes. */ void activityPaused(in IBinder token); oneway void activityStopped(in IBinder token, in Bundle state, in PersistableBundle persistentState, in CharSequence description); oneway void activityStopped( in IBinder token, in Bundle state, in PersistableBundle persistentState, in HandoffActivityData handoffActivityData, in CharSequence description); oneway void activityDestroyed(in IBinder token); oneway void activityLocalRelaunch(in IBinder token); oneway void activityRelaunched(in IBinder token); Loading core/java/android/app/servertransaction/PendingTransactionActions.java +11 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.app.ActivityThread.DEBUG_MEMORY_TRIM; import android.app.ActivityClient; import android.app.ActivityThread.ActivityClientRecord; import android.app.HandoffActivityData; import android.os.Build; import android.os.Bundle; import android.os.PersistableBundle; Loading Loading @@ -98,6 +99,7 @@ public class PendingTransactionActions { private ActivityClientRecord mActivity; private Bundle mState; private PersistableBundle mPersistentState; private HandoffActivityData mHandoffActivityData; private CharSequence mDescription; public void setActivity(ActivityClientRecord activity) { Loading @@ -112,6 +114,10 @@ public class PendingTransactionActions { mPersistentState = persistentState; } public void setHandoffActivityData(HandoffActivityData handoffActivityData) { mHandoffActivityData = handoffActivityData; } public void setDescription(CharSequence description) { mDescription = description; } Loading @@ -133,7 +139,11 @@ public class PendingTransactionActions { if (DEBUG_MEMORY_TRIM) Slog.v(TAG, "Reporting activity stopped: " + mActivity); // TODO(lifecycler): Use interface callback instead of AMS. ActivityClient.getInstance().activityStopped( mActivity.token, mState, mPersistentState, mDescription); mActivity.token, mState, mPersistentState, mHandoffActivityData, mDescription); } catch (RuntimeException runtimeException) { // Collect the statistics about bundle final String bundleStats = collectBundleStates(); Loading Loading
core/java/android/app/ActivityClient.java +9 −4 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.os.UserHandle.getCallingUserId; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.app.HandoffActivityData; import android.content.ComponentName; import android.content.ContentProvider; import android.content.Intent; Loading Loading @@ -95,9 +96,13 @@ public class ActivityClient { /** Reports {@link Activity#onStop()} is done. */ public void activityStopped(IBinder token, Bundle state, PersistableBundle persistentState, CharSequence description) { HandoffActivityData handoffActivityData, CharSequence description) { try { getActivityClientController().activityStopped(token, state, persistentState, getActivityClientController().activityStopped( token, state, persistentState, handoffActivityData, description); } catch (RemoteException e) { e.rethrowFromSystemServer(); Loading
core/java/android/app/ActivityThread.java +12 −0 Original line number Diff line number Diff line Loading @@ -648,6 +648,7 @@ public final class ActivityThread extends ClientTransactionHandler boolean hideForNow; Configuration createdConfig; Configuration overrideConfig; HandoffActivityData handoffActivityData; @NonNull private final ActivityWindowInfo mActivityWindowInfo = new ActivityWindowInfo(); @NonNull Loading Loading @@ -6311,6 +6312,10 @@ public final class ActivityThread extends ClientTransactionHandler stopInfo.setActivity(r); stopInfo.setState(r.state); stopInfo.setPersistentState(r.persistentState); if (android.companion.Flags.enableTaskContinuity()) { stopInfo.setHandoffActivityData(r.handoffActivityData); } pendingActions.setStopInfo(stopInfo); mSomeActivitiesChanged = true; } Loading Loading @@ -6851,6 +6856,13 @@ public final class ActivityThread extends ClientTransactionHandler private void callActivityOnSaveInstanceState(ActivityClientRecord r) { r.state = new Bundle(); r.state.setAllowFds(false); if (android.companion.Flags.enableTaskContinuity() && r.activity.isHandoffEnabled()) { final HandoffActivityDataRequestInfo requestInfo = new HandoffActivityDataRequestInfo(false /* isActiveRequest */); r.handoffActivityData = r.activity.onHandoffActivityDataRequested(requestInfo); } if (r.isPersistable()) { r.persistentState = new PersistableBundle(); mInstrumentation.callActivityOnSaveInstanceState(r.activity, r.state, Loading
core/java/android/app/HandoffFailureCode.java +4 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,8 @@ public final class HandoffFailureCode { HANDOFF_FAILURE_UNKNOWN_TASK, HANDOFF_FAILURE_INTERNAL_ERROR, HANDOFF_FAILURE_EMPTY_TASK, HANDOFF_FAILURE_UNSUPPORTED_TASK HANDOFF_FAILURE_UNSUPPORTED_TASK, HANDOFF_FAILURE_APP_DID_NOT_REPORT_HANDOFF_DATA, }) @Retention(RetentionPolicy.SOURCE) public @interface FailureCode {} Loading @@ -53,4 +54,6 @@ public final class HandoffFailureCode { public static final int HANDOFF_FAILURE_EMPTY_TASK = 5; /** The handoff task data request was for a task whose top activity does not support handoff. */ public static final int HANDOFF_FAILURE_UNSUPPORTED_TASK = 6; /** Handoff task data was not reported by the app, despite the app supporting handoff. */ public static final int HANDOFF_FAILURE_APP_DID_NOT_REPORT_HANDOFF_DATA = 7; } No newline at end of file
core/java/android/app/IActivityClientController.aidl +7 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app; import android.app.ActivityManager; import android.app.HandoffActivityData; import android.app.IRequestFinishCallback; import android.app.PictureInPictureParams; import android.content.ComponentName; Loading Loading @@ -52,8 +53,12 @@ interface IActivityClientController { * there won't be other lifecycle changes. */ void activityPaused(in IBinder token); oneway void activityStopped(in IBinder token, in Bundle state, in PersistableBundle persistentState, in CharSequence description); oneway void activityStopped( in IBinder token, in Bundle state, in PersistableBundle persistentState, in HandoffActivityData handoffActivityData, in CharSequence description); oneway void activityDestroyed(in IBinder token); oneway void activityLocalRelaunch(in IBinder token); oneway void activityRelaunched(in IBinder token); Loading
core/java/android/app/servertransaction/PendingTransactionActions.java +11 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.app.ActivityThread.DEBUG_MEMORY_TRIM; import android.app.ActivityClient; import android.app.ActivityThread.ActivityClientRecord; import android.app.HandoffActivityData; import android.os.Build; import android.os.Bundle; import android.os.PersistableBundle; Loading Loading @@ -98,6 +99,7 @@ public class PendingTransactionActions { private ActivityClientRecord mActivity; private Bundle mState; private PersistableBundle mPersistentState; private HandoffActivityData mHandoffActivityData; private CharSequence mDescription; public void setActivity(ActivityClientRecord activity) { Loading @@ -112,6 +114,10 @@ public class PendingTransactionActions { mPersistentState = persistentState; } public void setHandoffActivityData(HandoffActivityData handoffActivityData) { mHandoffActivityData = handoffActivityData; } public void setDescription(CharSequence description) { mDescription = description; } Loading @@ -133,7 +139,11 @@ public class PendingTransactionActions { if (DEBUG_MEMORY_TRIM) Slog.v(TAG, "Reporting activity stopped: " + mActivity); // TODO(lifecycler): Use interface callback instead of AMS. ActivityClient.getInstance().activityStopped( mActivity.token, mState, mPersistentState, mDescription); mActivity.token, mState, mPersistentState, mHandoffActivityData, mDescription); } catch (RuntimeException runtimeException) { // Collect the statistics about bundle final String bundleStats = collectBundleStates(); Loading