diff options
| -rw-r--r-- | core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java | 45 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 6 |
2 files changed, 20 insertions, 31 deletions
diff --git a/core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java b/core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java index 11947e9b11d8..5068c39c99a2 100644 --- a/core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java +++ b/core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java @@ -29,12 +29,24 @@ import java.util.Objects; /** * Transfer a splash screen view to an Activity. + * * @hide */ public class TransferSplashScreenViewStateItem extends ActivityTransactionItem { - private SplashScreenViewParcelable mSplashScreenViewParcelable; - private SurfaceControl mStartingWindowLeash; + @Nullable + private final SplashScreenViewParcelable mSplashScreenViewParcelable; + + @Nullable + private final SurfaceControl mStartingWindowLeash; + + public TransferSplashScreenViewStateItem(@NonNull IBinder activityToken, + @Nullable SplashScreenViewParcelable parcelable, + @Nullable SurfaceControl startingWindowLeash) { + super(activityToken); + mSplashScreenViewParcelable = parcelable; + mStartingWindowLeash = startingWindowLeash; + } @Override public void execute(@NonNull ClientTransactionHandler client, @@ -43,14 +55,9 @@ public class TransferSplashScreenViewStateItem extends ActivityTransactionItem { client.handleAttachSplashScreenView(r, mSplashScreenViewParcelable, mStartingWindowLeash); } - @Override - public void recycle() { - super.recycle(); - mSplashScreenViewParcelable = null; - mStartingWindowLeash = null; - ObjectPool.recycle(this); - } + // Parcelable implementation + /** Writes to Parcel. */ @Override public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); @@ -58,31 +65,13 @@ public class TransferSplashScreenViewStateItem extends ActivityTransactionItem { dest.writeTypedObject(mStartingWindowLeash, flags); } - private TransferSplashScreenViewStateItem() {} - + /** Reads from Parcel. */ private TransferSplashScreenViewStateItem(@NonNull Parcel in) { super(in); mSplashScreenViewParcelable = in.readTypedObject(SplashScreenViewParcelable.CREATOR); mStartingWindowLeash = in.readTypedObject(SurfaceControl.CREATOR); } - /** Obtain an instance initialized with provided params. */ - @NonNull - public static TransferSplashScreenViewStateItem obtain( - @NonNull IBinder activityToken, @Nullable SplashScreenViewParcelable parcelable, - @Nullable SurfaceControl startingWindowLeash) { - TransferSplashScreenViewStateItem instance = - ObjectPool.obtain(TransferSplashScreenViewStateItem.class); - if (instance == null) { - instance = new TransferSplashScreenViewStateItem(); - } - instance.setActivityToken(activityToken); - instance.mSplashScreenViewParcelable = parcelable; - instance.mStartingWindowLeash = startingWindowLeash; - - return instance; - } - public static final @NonNull Creator<TransferSplashScreenViewStateItem> CREATOR = new Creator<>() { public TransferSplashScreenViewStateItem createFromParcel(@NonNull Parcel in) { diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 32a01cb71cbb..5764be9efa6d 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2812,9 +2812,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } try { mTransferringSplashScreenState = TRANSFER_SPLASH_SCREEN_ATTACH_TO_CLIENT; - mAtmService.getLifecycleManager().scheduleTransactionItem(app.getThread(), - TransferSplashScreenViewStateItem.obtain(token, parcelable, - windowAnimationLeash)); + final TransferSplashScreenViewStateItem item = + new TransferSplashScreenViewStateItem(token, parcelable, windowAnimationLeash); + mAtmService.getLifecycleManager().scheduleTransactionItem(app.getThread(), item); scheduleTransferSplashScreenTimeout(); } catch (Exception e) { Slog.w(TAG, "onCopySplashScreenComplete fail: " + this); |