summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java45
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java6
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);