Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dcd7eb59 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove DestroyActivityItem object pooling (4/n)." into main

parents 192af059 d015121d
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.app.servertransaction;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.os.IBinder;
import android.os.Parcel;

import java.lang.annotation.Retention;
@@ -25,6 +26,7 @@ import java.lang.annotation.RetentionPolicy;

/**
 * Request for lifecycle state that an activity should reach.
 *
 * @hide
 */
public abstract class ActivityLifecycleItem extends ActivityTransactionItem {
@@ -52,8 +54,19 @@ public abstract class ActivityLifecycleItem extends ActivityTransactionItem {
    public static final int ON_DESTROY = 6;
    public static final int ON_RESTART = 7;

    ActivityLifecycleItem() {}
    ActivityLifecycleItem(@NonNull IBinder activityToken) {
        super(activityToken);
    }

    // TODO(b/311089192): Remove this method once no subclasses obtain from the object pool.
    @Deprecated
    ActivityLifecycleItem() {
        super();
    }

    // Parcelable implementation

    /** Reads from Parcel. */
    ActivityLifecycleItem(@NonNull Parcel in) {
        super(in);
    }
+26 −14
Original line number Diff line number Diff line
@@ -49,9 +49,29 @@ import java.util.Objects;
public abstract class ActivityTransactionItem extends ClientTransactionItem {

    /** Target client activity. */
    // TODO(b/311089192): Mark this with @NonNull and final.
    private IBinder mActivityToken;

    ActivityTransactionItem() {}
    public ActivityTransactionItem(@NonNull IBinder activityToken) {
        mActivityToken = requireNonNull(activityToken);
    }

    // TODO(b/311089192): Remove this method once no subclasses obtain from the object pool.
    @Deprecated
    ActivityTransactionItem() {
    }

    /**
     * Sets the activity token after the instance is obtained from the object pool.
     *
     * @deprecated This method is deprecated. The object pool is no longer used.
     *     Instead, directly create a new object with the activity token.
     * TODO(b/311089192): Remove this method once no subclasses obtain from the object pool.
     */
    @Deprecated
    void setActivityToken(@NonNull IBinder activityToken) {
        mActivityToken = requireNonNull(activityToken);
    }

    @Override
    public final void execute(@NonNull ClientTransactionHandler client,
@@ -94,26 +114,18 @@ public abstract class ActivityTransactionItem extends ClientTransactionItem {
        return mActivityToken;
    }

    void setActivityToken(@NonNull IBinder activityToken) {
        mActivityToken = requireNonNull(activityToken);
    }

    // To be overridden

    ActivityTransactionItem(@NonNull Parcel in) {
        mActivityToken = in.readStrongBinder();
    }
    // Parcelable implementation

    /** Writes to Parcel. */
    @CallSuper
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeStrongBinder(mActivityToken);
    }

    @CallSuper
    @Override
    public void recycle() {
        mActivityToken = null;
    /** Reads from Parcel. */
    ActivityTransactionItem(@NonNull Parcel in) {
        this(in.readStrongBinder());
    }

    @Override
+9 −27
Original line number Diff line number Diff line
@@ -28,11 +28,17 @@ import android.os.Trace;

/**
 * Request to destroy an activity.
 *
 * @hide
 */
public class DestroyActivityItem extends ActivityLifecycleItem {

    private boolean mFinished;
    private final boolean mFinished;

    public DestroyActivityItem(@NonNull IBinder activityToken, boolean finished) {
        super(activityToken);
        mFinished = finished;
    }

    @Override
    public void preExecute(@NonNull ClientTransactionHandler client) {
@@ -60,40 +66,16 @@ public class DestroyActivityItem extends ActivityLifecycleItem {
        return ON_DESTROY;
    }

    // ObjectPoolItem implementation

    private DestroyActivityItem() {}

    /** Obtain an instance initialized with provided params. */
    @NonNull
    public static DestroyActivityItem obtain(@NonNull IBinder activityToken, boolean finished) {
        DestroyActivityItem instance = ObjectPool.obtain(DestroyActivityItem.class);
        if (instance == null) {
            instance = new DestroyActivityItem();
        }
        instance.setActivityToken(activityToken);
        instance.mFinished = finished;

        return instance;
    }

    @Override
    public void recycle() {
        super.recycle();
        mFinished = false;
        ObjectPool.recycle(this);
    }

    // Parcelable implementation

    /** Write to Parcel. */
    /** Writes to Parcel. */
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        super.writeToParcel(dest, flags);
        dest.writeBoolean(mFinished);
    }

    /** Read from Parcel. */
    /** Reads from Parcel. */
    private DestroyActivityItem(@NonNull Parcel in) {
        super(in);
        mFinished = in.readBoolean();
+6 −6
Original line number Diff line number Diff line
@@ -102,8 +102,8 @@ public class ClientTransactionItemTest {

    @Test
    public void testDestroyActivityItem_preExecute() {
        final DestroyActivityItem item = DestroyActivityItem
                .obtain(mActivityToken, false /* finished */);
        final DestroyActivityItem item =
                new DestroyActivityItem(mActivityToken, false /* finished */);

        item.preExecute(mHandler);

@@ -113,8 +113,8 @@ public class ClientTransactionItemTest {

    @Test
    public void testDestroyActivityItem_postExecute() {
        final DestroyActivityItem item = DestroyActivityItem
                .obtain(mActivityToken, false /* finished */);
        final DestroyActivityItem item =
                new DestroyActivityItem(mActivityToken, false /* finished */);
        item.preExecute(mHandler);

        item.postExecute(mHandler, mPendingActions);
@@ -124,8 +124,8 @@ public class ClientTransactionItemTest {

    @Test
    public void testDestroyActivityItem_execute() {
        final DestroyActivityItem item = DestroyActivityItem
                .obtain(mActivityToken, false /* finished */);
        final DestroyActivityItem item =
                new DestroyActivityItem(mActivityToken, false /* finished */);

        item.execute(mHandler, mActivityClientRecord, mPendingActions);

+0 −5
Original line number Diff line number Diff line
@@ -89,11 +89,6 @@ public class ObjectPoolTests {
        testRecycle(() -> ConfigurationChangeItem.obtain(config(), 1));
    }

    @Test
    public void testRecycleDestroyActivityItem() {
        testRecycle(() -> DestroyActivityItem.obtain(mActivityToken, true));
    }

    @Test
    public void testRecycleLaunchActivityItem() {
        final IBinder activityToken = new Binder();
Loading