Loading core/java/android/app/ActivityThread.java +12 −11 Original line number Diff line number Diff line Loading @@ -3655,15 +3655,16 @@ public final class ActivityThread extends ClientTransactionHandler } @UnsupportedAppUsage public final void sendActivityResult( IBinder token, String id, int requestCode, public void sendActivityResult( IBinder activityToken, String id, int requestCode, int resultCode, Intent data) { if (DEBUG_RESULTS) Slog.v(TAG, "sendActivityResult: id=" + id + " req=" + requestCode + " res=" + resultCode + " data=" + data); ArrayList<ResultInfo> list = new ArrayList<ResultInfo>(); list.add(new ResultInfo(id, requestCode, resultCode, data)); final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread, token); clientTransaction.addCallback(ActivityResultItem.obtain(list)); final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread, activityToken); clientTransaction.addCallback(ActivityResultItem.obtain(activityToken, list)); try { mAppThread.scheduleTransaction(clientTransaction); } catch (RemoteException e) { Loading Loading @@ -4365,16 +4366,16 @@ public final class ActivityThread extends ClientTransactionHandler private void schedulePauseWithUserLeavingHint(ActivityClientRecord r) { final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token); transaction.setLifecycleStateRequest(PauseActivityItem.obtain(r.activity.isFinishing(), /* userLeaving */ true, r.activity.mConfigChangeFlags, /* dontReport */ false, /* autoEnteringPip */ false)); transaction.setLifecycleStateRequest(PauseActivityItem.obtain(r.token, r.activity.isFinishing(), /* userLeaving */ true, r.activity.mConfigChangeFlags, /* dontReport */ false, /* autoEnteringPip */ false)); executeTransaction(transaction); } private void scheduleResume(ActivityClientRecord r) { final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token); transaction.setLifecycleStateRequest(ResumeActivityItem.obtain(/* isForward */ false, /* shouldSendCompatFakeFocus */ false)); transaction.setLifecycleStateRequest(ResumeActivityItem.obtain(r.token, /* isForward */ false, /* shouldSendCompatFakeFocus */ false)); executeTransaction(transaction); } Loading Loading @@ -5958,8 +5959,8 @@ public final class ActivityThread extends ClientTransactionHandler ? r.createdConfig : mConfigurationController.getConfiguration(), r.overrideConfig); final ActivityRelaunchItem activityRelaunchItem = ActivityRelaunchItem.obtain( null /* pendingResults */, null /* pendingIntents */, 0 /* configChanges */, mergedConfiguration, r.mPreserveWindow); r.token, 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); Loading core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java +26 −17 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { CompatibilityInfo.applyOverrideScaleIfNeeded(mConfiguration); // Notify the client of an upcoming change in the token configuration. This ensures that // batches of config change items only process the newest configuration. client.updatePendingActivityConfiguration(token, mConfiguration); client.updatePendingActivityConfiguration(getActivityToken(), mConfiguration); } @Override Loading @@ -61,8 +61,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { @Override public Context getContextToUpdate(@NonNull ClientTransactionHandler client, @Nullable IBinder token) { // TODO(b/260873529): Update ClientTransaction to bundle multiple activity config updates. return client.getActivity(token); return client.getActivity(getActivityToken()); } // ObjectPoolItem implementation Loading @@ -70,7 +69,9 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { private ActivityConfigurationChangeItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityConfigurationChangeItem obtain(@NonNull Configuration config) { @NonNull public static ActivityConfigurationChangeItem obtain(@NonNull IBinder activityToken, @NonNull Configuration config) { if (config == null) { throw new IllegalArgumentException("Config must not be null."); } Loading @@ -80,6 +81,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { if (instance == null) { instance = new ActivityConfigurationChangeItem(); } instance.setActivityToken(activityToken); instance.mConfiguration = config; return instance; Loading @@ -87,6 +89,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { @Override public void recycle() { super.recycle(); mConfiguration = Configuration.EMPTY; ObjectPool.recycle(this); } Loading @@ -96,18 +99,20 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { /** Write to Parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeTypedObject(mConfiguration, flags); } /** Read from Parcel. */ private ActivityConfigurationChangeItem(Parcel in) { private ActivityConfigurationChangeItem(@NonNull Parcel in) { super(in); mConfiguration = in.readTypedObject(Configuration.CREATOR); } public static final @NonNull Creator<ActivityConfigurationChangeItem> CREATOR = new Creator<ActivityConfigurationChangeItem>() { public ActivityConfigurationChangeItem createFromParcel(Parcel in) { new Creator<>() { public ActivityConfigurationChangeItem createFromParcel(@NonNull Parcel in) { return new ActivityConfigurationChangeItem(in); } Loading @@ -121,7 +126,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { if (!super.equals(o)) { return false; } final ActivityConfigurationChangeItem other = (ActivityConfigurationChangeItem) o; Loading @@ -130,11 +135,15 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { @Override public int hashCode() { return mConfiguration.hashCode(); int result = 17; result = 31 * result + super.hashCode(); result = 31 * result + Objects.hashCode(mConfiguration); return result; } @Override public String toString() { return "ActivityConfigurationChange{config=" + mConfiguration + "}"; return "ActivityConfigurationChange{" + super.toString() + ",config=" + mConfiguration + "}"; } } core/java/android/app/servertransaction/ActivityLifecycleItem.java +8 −5 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package android.app.servertransaction; import android.annotation.IntDef; import android.annotation.NonNull; import android.os.Parcel; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -50,12 +52,13 @@ public abstract class ActivityLifecycleItem extends ActivityTransactionItem { public static final int ON_DESTROY = 6; public static final int ON_RESTART = 7; ActivityLifecycleItem() {} ActivityLifecycleItem(@NonNull Parcel in) { super(in); } /** A final lifecycle state that an activity should reach. */ @LifecycleState public abstract int getTargetState(); /** Called by subclasses to make sure base implementation is cleaned up */ @Override public void recycle() { } } core/java/android/app/servertransaction/ActivityRelaunchItem.java +34 −24 Original line number Diff line number Diff line Loading @@ -56,18 +56,18 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { private ActivityClientRecord mActivityClientRecord; @Override public void preExecute(ClientTransactionHandler client, IBinder token) { public void preExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token) { // The local config is already scaled so only apply if this item is from server side. if (!client.isExecutingLocalTransaction()) { CompatibilityInfo.applyOverrideScaleIfNeeded(mConfig); } mActivityClientRecord = client.prepareRelaunchActivity(token, mPendingResults, mActivityClientRecord = client.prepareRelaunchActivity(getActivityToken(), mPendingResults, mPendingNewIntents, mConfigChanges, mConfig, mPreserveWindow); } @Override public void execute(ClientTransactionHandler client, ActivityClientRecord r, PendingTransactionActions pendingActions) { public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, @NonNull PendingTransactionActions pendingActions) { if (mActivityClientRecord == null) { if (DEBUG_ORDER) Slog.d(TAG, "Activity relaunch cancelled"); return; Loading @@ -78,9 +78,9 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { } @Override public void postExecute(ClientTransactionHandler client, IBinder token, PendingTransactionActions pendingActions) { final ActivityClientRecord r = getActivityClientRecord(client, token); public void postExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, @NonNull PendingTransactionActions pendingActions) { final ActivityClientRecord r = getActivityClientRecord(client); client.reportRelaunch(r); } Loading @@ -89,13 +89,16 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { private ActivityRelaunchItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityRelaunchItem obtain(List<ResultInfo> pendingResults, List<ReferrerIntent> pendingNewIntents, int configChanges, MergedConfiguration config, boolean preserveWindow) { @NonNull public static ActivityRelaunchItem obtain(@NonNull IBinder activityToken, @Nullable List<ResultInfo> pendingResults, @Nullable List<ReferrerIntent> pendingNewIntents, int configChanges, @NonNull MergedConfiguration config, boolean preserveWindow) { ActivityRelaunchItem instance = ObjectPool.obtain(ActivityRelaunchItem.class); if (instance == null) { instance = new ActivityRelaunchItem(); } instance.setActivityToken(activityToken); instance.mPendingResults = pendingResults; instance.mPendingNewIntents = pendingNewIntents; instance.mConfigChanges = configChanges; Loading @@ -107,6 +110,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { @Override public void recycle() { super.recycle(); mPendingResults = null; mPendingNewIntents = null; mConfigChanges = 0; Loading @@ -121,7 +125,8 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { /** Write to Parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeTypedList(mPendingResults, flags); dest.writeTypedList(mPendingNewIntents, flags); dest.writeInt(mConfigChanges); Loading @@ -130,7 +135,8 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { } /** Read from Parcel. */ private ActivityRelaunchItem(Parcel in) { private ActivityRelaunchItem(@NonNull Parcel in) { super(in); mPendingResults = in.createTypedArrayList(ResultInfo.CREATOR); mPendingNewIntents = in.createTypedArrayList(ReferrerIntent.CREATOR); mConfigChanges = in.readInt(); Loading @@ -139,8 +145,8 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { } public static final @NonNull Creator<ActivityRelaunchItem> CREATOR = new Creator<ActivityRelaunchItem>() { public ActivityRelaunchItem createFromParcel(Parcel in) { new Creator<>() { public ActivityRelaunchItem createFromParcel(@NonNull Parcel in) { return new ActivityRelaunchItem(in); } Loading @@ -154,7 +160,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { if (!super.equals(o)) { return false; } final ActivityRelaunchItem other = (ActivityRelaunchItem) o; Loading @@ -167,6 +173,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { @Override public int hashCode() { int result = 17; result = 31 * result + super.hashCode(); result = 31 * result + Objects.hashCode(mPendingResults); result = 31 * result + Objects.hashCode(mPendingNewIntents); result = 31 * result + mConfigChanges; Loading @@ -177,8 +184,11 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { @Override public String toString() { return "ActivityRelaunchItem{pendingResults=" + mPendingResults + ",pendingNewIntents=" + mPendingNewIntents + ",configChanges=" + mConfigChanges + ",config=" + mConfig + ",preserveWindow" + mPreserveWindow + "}"; return "ActivityRelaunchItem{" + super.toString() + ",pendingResults=" + mPendingResults + ",pendingNewIntents=" + mPendingNewIntents + ",configChanges=" + mConfigChanges + ",config=" + mConfig + ",preserveWindow" + mPreserveWindow + "}"; } } core/java/android/app/servertransaction/ActivityResultItem.java +27 −18 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledAfter; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import android.os.Trace; Loading Loading @@ -61,24 +62,26 @@ public class ActivityResultItem extends ActivityTransactionItem { } @Override public void execute(ClientTransactionHandler client, ActivityClientRecord r, PendingTransactionActions pendingActions) { public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityDeliverResult"); client.handleSendResult(r, mResultInfoList, "ACTIVITY_RESULT"); Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } // ObjectPoolItem implementation private ActivityResultItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityResultItem obtain(List<ResultInfo> resultInfoList) { @NonNull public static ActivityResultItem obtain(@NonNull IBinder activityToken, @NonNull List<ResultInfo> resultInfoList) { ActivityResultItem instance = ObjectPool.obtain(ActivityResultItem.class); if (instance == null) { instance = new ActivityResultItem(); } instance.setActivityToken(activityToken); instance.mResultInfoList = resultInfoList; return instance; Loading @@ -86,27 +89,29 @@ public class ActivityResultItem extends ActivityTransactionItem { @Override public void recycle() { super.recycle(); mResultInfoList = null; ObjectPool.recycle(this); } // Parcelable implementation /** Write to Parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeTypedList(mResultInfoList, flags); } /** Read from Parcel. */ private ActivityResultItem(Parcel in) { private ActivityResultItem(@NonNull Parcel in) { super(in); mResultInfoList = in.createTypedArrayList(ResultInfo.CREATOR); } public static final @NonNull Parcelable.Creator<ActivityResultItem> CREATOR = new Parcelable.Creator<ActivityResultItem>() { public ActivityResultItem createFromParcel(Parcel in) { new Parcelable.Creator<>() { public ActivityResultItem createFromParcel(@NonNull Parcel in) { return new ActivityResultItem(in); } Loading @@ -120,7 +125,7 @@ public class ActivityResultItem extends ActivityTransactionItem { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { if (!super.equals(o)) { return false; } final ActivityResultItem other = (ActivityResultItem) o; Loading @@ -129,11 +134,15 @@ public class ActivityResultItem extends ActivityTransactionItem { @Override public int hashCode() { return mResultInfoList.hashCode(); int result = 17; result = 31 * result + super.hashCode(); result = 31 * result + Objects.hashCode(mResultInfoList); return result; } @Override public String toString() { return "ActivityResultItem{resultInfoList=" + mResultInfoList + "}"; return "ActivityResultItem{" + super.toString() + ",resultInfoList=" + mResultInfoList + "}"; } } Loading
core/java/android/app/ActivityThread.java +12 −11 Original line number Diff line number Diff line Loading @@ -3655,15 +3655,16 @@ public final class ActivityThread extends ClientTransactionHandler } @UnsupportedAppUsage public final void sendActivityResult( IBinder token, String id, int requestCode, public void sendActivityResult( IBinder activityToken, String id, int requestCode, int resultCode, Intent data) { if (DEBUG_RESULTS) Slog.v(TAG, "sendActivityResult: id=" + id + " req=" + requestCode + " res=" + resultCode + " data=" + data); ArrayList<ResultInfo> list = new ArrayList<ResultInfo>(); list.add(new ResultInfo(id, requestCode, resultCode, data)); final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread, token); clientTransaction.addCallback(ActivityResultItem.obtain(list)); final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread, activityToken); clientTransaction.addCallback(ActivityResultItem.obtain(activityToken, list)); try { mAppThread.scheduleTransaction(clientTransaction); } catch (RemoteException e) { Loading Loading @@ -4365,16 +4366,16 @@ public final class ActivityThread extends ClientTransactionHandler private void schedulePauseWithUserLeavingHint(ActivityClientRecord r) { final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token); transaction.setLifecycleStateRequest(PauseActivityItem.obtain(r.activity.isFinishing(), /* userLeaving */ true, r.activity.mConfigChangeFlags, /* dontReport */ false, /* autoEnteringPip */ false)); transaction.setLifecycleStateRequest(PauseActivityItem.obtain(r.token, r.activity.isFinishing(), /* userLeaving */ true, r.activity.mConfigChangeFlags, /* dontReport */ false, /* autoEnteringPip */ false)); executeTransaction(transaction); } private void scheduleResume(ActivityClientRecord r) { final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token); transaction.setLifecycleStateRequest(ResumeActivityItem.obtain(/* isForward */ false, /* shouldSendCompatFakeFocus */ false)); transaction.setLifecycleStateRequest(ResumeActivityItem.obtain(r.token, /* isForward */ false, /* shouldSendCompatFakeFocus */ false)); executeTransaction(transaction); } Loading Loading @@ -5958,8 +5959,8 @@ public final class ActivityThread extends ClientTransactionHandler ? r.createdConfig : mConfigurationController.getConfiguration(), r.overrideConfig); final ActivityRelaunchItem activityRelaunchItem = ActivityRelaunchItem.obtain( null /* pendingResults */, null /* pendingIntents */, 0 /* configChanges */, mergedConfiguration, r.mPreserveWindow); r.token, 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); Loading
core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java +26 −17 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { CompatibilityInfo.applyOverrideScaleIfNeeded(mConfiguration); // Notify the client of an upcoming change in the token configuration. This ensures that // batches of config change items only process the newest configuration. client.updatePendingActivityConfiguration(token, mConfiguration); client.updatePendingActivityConfiguration(getActivityToken(), mConfiguration); } @Override Loading @@ -61,8 +61,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { @Override public Context getContextToUpdate(@NonNull ClientTransactionHandler client, @Nullable IBinder token) { // TODO(b/260873529): Update ClientTransaction to bundle multiple activity config updates. return client.getActivity(token); return client.getActivity(getActivityToken()); } // ObjectPoolItem implementation Loading @@ -70,7 +69,9 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { private ActivityConfigurationChangeItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityConfigurationChangeItem obtain(@NonNull Configuration config) { @NonNull public static ActivityConfigurationChangeItem obtain(@NonNull IBinder activityToken, @NonNull Configuration config) { if (config == null) { throw new IllegalArgumentException("Config must not be null."); } Loading @@ -80,6 +81,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { if (instance == null) { instance = new ActivityConfigurationChangeItem(); } instance.setActivityToken(activityToken); instance.mConfiguration = config; return instance; Loading @@ -87,6 +89,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { @Override public void recycle() { super.recycle(); mConfiguration = Configuration.EMPTY; ObjectPool.recycle(this); } Loading @@ -96,18 +99,20 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { /** Write to Parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeTypedObject(mConfiguration, flags); } /** Read from Parcel. */ private ActivityConfigurationChangeItem(Parcel in) { private ActivityConfigurationChangeItem(@NonNull Parcel in) { super(in); mConfiguration = in.readTypedObject(Configuration.CREATOR); } public static final @NonNull Creator<ActivityConfigurationChangeItem> CREATOR = new Creator<ActivityConfigurationChangeItem>() { public ActivityConfigurationChangeItem createFromParcel(Parcel in) { new Creator<>() { public ActivityConfigurationChangeItem createFromParcel(@NonNull Parcel in) { return new ActivityConfigurationChangeItem(in); } Loading @@ -121,7 +126,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { if (!super.equals(o)) { return false; } final ActivityConfigurationChangeItem other = (ActivityConfigurationChangeItem) o; Loading @@ -130,11 +135,15 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { @Override public int hashCode() { return mConfiguration.hashCode(); int result = 17; result = 31 * result + super.hashCode(); result = 31 * result + Objects.hashCode(mConfiguration); return result; } @Override public String toString() { return "ActivityConfigurationChange{config=" + mConfiguration + "}"; return "ActivityConfigurationChange{" + super.toString() + ",config=" + mConfiguration + "}"; } }
core/java/android/app/servertransaction/ActivityLifecycleItem.java +8 −5 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package android.app.servertransaction; import android.annotation.IntDef; import android.annotation.NonNull; import android.os.Parcel; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -50,12 +52,13 @@ public abstract class ActivityLifecycleItem extends ActivityTransactionItem { public static final int ON_DESTROY = 6; public static final int ON_RESTART = 7; ActivityLifecycleItem() {} ActivityLifecycleItem(@NonNull Parcel in) { super(in); } /** A final lifecycle state that an activity should reach. */ @LifecycleState public abstract int getTargetState(); /** Called by subclasses to make sure base implementation is cleaned up */ @Override public void recycle() { } }
core/java/android/app/servertransaction/ActivityRelaunchItem.java +34 −24 Original line number Diff line number Diff line Loading @@ -56,18 +56,18 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { private ActivityClientRecord mActivityClientRecord; @Override public void preExecute(ClientTransactionHandler client, IBinder token) { public void preExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token) { // The local config is already scaled so only apply if this item is from server side. if (!client.isExecutingLocalTransaction()) { CompatibilityInfo.applyOverrideScaleIfNeeded(mConfig); } mActivityClientRecord = client.prepareRelaunchActivity(token, mPendingResults, mActivityClientRecord = client.prepareRelaunchActivity(getActivityToken(), mPendingResults, mPendingNewIntents, mConfigChanges, mConfig, mPreserveWindow); } @Override public void execute(ClientTransactionHandler client, ActivityClientRecord r, PendingTransactionActions pendingActions) { public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, @NonNull PendingTransactionActions pendingActions) { if (mActivityClientRecord == null) { if (DEBUG_ORDER) Slog.d(TAG, "Activity relaunch cancelled"); return; Loading @@ -78,9 +78,9 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { } @Override public void postExecute(ClientTransactionHandler client, IBinder token, PendingTransactionActions pendingActions) { final ActivityClientRecord r = getActivityClientRecord(client, token); public void postExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, @NonNull PendingTransactionActions pendingActions) { final ActivityClientRecord r = getActivityClientRecord(client); client.reportRelaunch(r); } Loading @@ -89,13 +89,16 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { private ActivityRelaunchItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityRelaunchItem obtain(List<ResultInfo> pendingResults, List<ReferrerIntent> pendingNewIntents, int configChanges, MergedConfiguration config, boolean preserveWindow) { @NonNull public static ActivityRelaunchItem obtain(@NonNull IBinder activityToken, @Nullable List<ResultInfo> pendingResults, @Nullable List<ReferrerIntent> pendingNewIntents, int configChanges, @NonNull MergedConfiguration config, boolean preserveWindow) { ActivityRelaunchItem instance = ObjectPool.obtain(ActivityRelaunchItem.class); if (instance == null) { instance = new ActivityRelaunchItem(); } instance.setActivityToken(activityToken); instance.mPendingResults = pendingResults; instance.mPendingNewIntents = pendingNewIntents; instance.mConfigChanges = configChanges; Loading @@ -107,6 +110,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { @Override public void recycle() { super.recycle(); mPendingResults = null; mPendingNewIntents = null; mConfigChanges = 0; Loading @@ -121,7 +125,8 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { /** Write to Parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeTypedList(mPendingResults, flags); dest.writeTypedList(mPendingNewIntents, flags); dest.writeInt(mConfigChanges); Loading @@ -130,7 +135,8 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { } /** Read from Parcel. */ private ActivityRelaunchItem(Parcel in) { private ActivityRelaunchItem(@NonNull Parcel in) { super(in); mPendingResults = in.createTypedArrayList(ResultInfo.CREATOR); mPendingNewIntents = in.createTypedArrayList(ReferrerIntent.CREATOR); mConfigChanges = in.readInt(); Loading @@ -139,8 +145,8 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { } public static final @NonNull Creator<ActivityRelaunchItem> CREATOR = new Creator<ActivityRelaunchItem>() { public ActivityRelaunchItem createFromParcel(Parcel in) { new Creator<>() { public ActivityRelaunchItem createFromParcel(@NonNull Parcel in) { return new ActivityRelaunchItem(in); } Loading @@ -154,7 +160,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { if (!super.equals(o)) { return false; } final ActivityRelaunchItem other = (ActivityRelaunchItem) o; Loading @@ -167,6 +173,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { @Override public int hashCode() { int result = 17; result = 31 * result + super.hashCode(); result = 31 * result + Objects.hashCode(mPendingResults); result = 31 * result + Objects.hashCode(mPendingNewIntents); result = 31 * result + mConfigChanges; Loading @@ -177,8 +184,11 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { @Override public String toString() { return "ActivityRelaunchItem{pendingResults=" + mPendingResults + ",pendingNewIntents=" + mPendingNewIntents + ",configChanges=" + mConfigChanges + ",config=" + mConfig + ",preserveWindow" + mPreserveWindow + "}"; return "ActivityRelaunchItem{" + super.toString() + ",pendingResults=" + mPendingResults + ",pendingNewIntents=" + mPendingNewIntents + ",configChanges=" + mConfigChanges + ",config=" + mConfig + ",preserveWindow" + mPreserveWindow + "}"; } }
core/java/android/app/servertransaction/ActivityResultItem.java +27 −18 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledAfter; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import android.os.Trace; Loading Loading @@ -61,24 +62,26 @@ public class ActivityResultItem extends ActivityTransactionItem { } @Override public void execute(ClientTransactionHandler client, ActivityClientRecord r, PendingTransactionActions pendingActions) { public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityDeliverResult"); client.handleSendResult(r, mResultInfoList, "ACTIVITY_RESULT"); Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } // ObjectPoolItem implementation private ActivityResultItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityResultItem obtain(List<ResultInfo> resultInfoList) { @NonNull public static ActivityResultItem obtain(@NonNull IBinder activityToken, @NonNull List<ResultInfo> resultInfoList) { ActivityResultItem instance = ObjectPool.obtain(ActivityResultItem.class); if (instance == null) { instance = new ActivityResultItem(); } instance.setActivityToken(activityToken); instance.mResultInfoList = resultInfoList; return instance; Loading @@ -86,27 +89,29 @@ public class ActivityResultItem extends ActivityTransactionItem { @Override public void recycle() { super.recycle(); mResultInfoList = null; ObjectPool.recycle(this); } // Parcelable implementation /** Write to Parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeTypedList(mResultInfoList, flags); } /** Read from Parcel. */ private ActivityResultItem(Parcel in) { private ActivityResultItem(@NonNull Parcel in) { super(in); mResultInfoList = in.createTypedArrayList(ResultInfo.CREATOR); } public static final @NonNull Parcelable.Creator<ActivityResultItem> CREATOR = new Parcelable.Creator<ActivityResultItem>() { public ActivityResultItem createFromParcel(Parcel in) { new Parcelable.Creator<>() { public ActivityResultItem createFromParcel(@NonNull Parcel in) { return new ActivityResultItem(in); } Loading @@ -120,7 +125,7 @@ public class ActivityResultItem extends ActivityTransactionItem { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { if (!super.equals(o)) { return false; } final ActivityResultItem other = (ActivityResultItem) o; Loading @@ -129,11 +134,15 @@ public class ActivityResultItem extends ActivityTransactionItem { @Override public int hashCode() { return mResultInfoList.hashCode(); int result = 17; result = 31 * result + super.hashCode(); result = 31 * result + Objects.hashCode(mResultInfoList); return result; } @Override public String toString() { return "ActivityResultItem{resultInfoList=" + mResultInfoList + "}"; return "ActivityResultItem{" + super.toString() + ",resultInfoList=" + mResultInfoList + "}"; } }