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

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

Merge changes Ib458941e,I7a49fa4e,Icc9ec34f into main

* changes:
  Remove ActivityConfigurationChangeItem pool (8/n).
  Remove PauseActivityItem object pooling (7/n).
  Remove Start/StopActivityItem obj pooling (6/n).
parents 3ecb6a59 c3d12d78
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4614,7 +4614,7 @@ public final class ActivityThread extends ClientTransactionHandler

    private void schedulePauseWithUserLeavingHint(ActivityClientRecord r) {
        final ClientTransaction transaction = new ClientTransaction(mAppThread);
        final PauseActivityItem pauseActivityItem = PauseActivityItem.obtain(r.token,
        final PauseActivityItem pauseActivityItem = new PauseActivityItem(r.token,
                r.activity.isFinishing(), /* userLeaving */ true,
                /* dontReport */ false, /* autoEnteringPip */ false);
        transaction.addTransactionItem(pauseActivityItem);
+19 −35
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package android.app.servertransaction;
import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
import static android.view.Display.INVALID_DISPLAY;

import static java.util.Objects.requireNonNull;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityThread.ActivityClientRecord;
@@ -34,12 +36,23 @@ import java.util.Objects;

/**
 * Activity configuration changed callback.
 *
 * @hide
 */
public class ActivityConfigurationChangeItem extends ActivityTransactionItem {

    private Configuration mConfiguration;
    private ActivityWindowInfo mActivityWindowInfo;
    @NonNull
    private final Configuration mConfiguration;

    @NonNull
    private final ActivityWindowInfo mActivityWindowInfo;

    public ActivityConfigurationChangeItem(@NonNull IBinder activityToken,
            @NonNull Configuration config, @NonNull ActivityWindowInfo activityWindowInfo) {
        super(activityToken);
        mConfiguration = new Configuration(config);
        mActivityWindowInfo = new ActivityWindowInfo(activityWindowInfo);
    }

    @Override
    public void preExecute(@NonNull ClientTransactionHandler client) {
@@ -59,38 +72,9 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem {
        Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
    }

    // ObjectPoolItem implementation

    private ActivityConfigurationChangeItem() {}

    /** Obtain an instance initialized with provided params. */
    @NonNull
    public static ActivityConfigurationChangeItem obtain(@NonNull IBinder activityToken,
            @NonNull Configuration config, @NonNull ActivityWindowInfo activityWindowInfo) {
        ActivityConfigurationChangeItem instance =
                ObjectPool.obtain(ActivityConfigurationChangeItem.class);
        if (instance == null) {
            instance = new ActivityConfigurationChangeItem();
        }
        instance.setActivityToken(activityToken);
        instance.mConfiguration = new Configuration(config);
        instance.mActivityWindowInfo = new ActivityWindowInfo(activityWindowInfo);

        return instance;
    }

    @Override
    public void recycle() {
        super.recycle();
        mConfiguration = null;
        mActivityWindowInfo = null;
        ObjectPool.recycle(this);
    }


    // Parcelable implementation

    /** Write to Parcel. */
    /** Writes to Parcel. */
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        super.writeToParcel(dest, flags);
@@ -98,11 +82,11 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem {
        dest.writeTypedObject(mActivityWindowInfo, flags);
    }

    /** Read from Parcel. */
    /** Reads from Parcel. */
    private ActivityConfigurationChangeItem(@NonNull Parcel in) {
        super(in);
        mConfiguration = in.readTypedObject(Configuration.CREATOR);
        mActivityWindowInfo = in.readTypedObject(ActivityWindowInfo.CREATOR);
        mConfiguration = requireNonNull(in.readTypedObject(Configuration.CREATOR));
        mActivityWindowInfo = requireNonNull(in.readTypedObject(ActivityWindowInfo.CREATOR));
    }

    public static final @NonNull Creator<ActivityConfigurationChangeItem> CREATOR =
+0 −6
Original line number Diff line number Diff line
@@ -58,12 +58,6 @@ public abstract class ActivityLifecycleItem extends ActivityTransactionItem {
        super(activityToken);
    }

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

    // Parcelable implementation

    /** Reads from Parcel. */
+20 −45
Original line number Diff line number Diff line
@@ -29,16 +29,29 @@ import android.os.Trace;

/**
 * Request to move an activity to paused state.
 *
 * @hide
 */
public class PauseActivityItem extends ActivityLifecycleItem {

    private static final String TAG = "PauseActivityItem";
    private final boolean mFinished;
    private final boolean mUserLeaving;
    private final boolean mDontReport;
    private final boolean mAutoEnteringPip;

    private boolean mFinished;
    private boolean mUserLeaving;
    private boolean mDontReport;
    private boolean mAutoEnteringPip;
    public PauseActivityItem(@NonNull IBinder activityToken) {
        this(activityToken, false /* finished */, false /* userLeaving */,
                true /* dontReport */, false /* autoEnteringPip*/);
    }

    public PauseActivityItem(@NonNull IBinder activityToken, boolean finished,
            boolean userLeaving, boolean dontReport, boolean autoEnteringPip) {
        super(activityToken);
        mFinished = finished;
        mUserLeaving = userLeaving;
        mDontReport = dontReport;
        mAutoEnteringPip = autoEnteringPip;
    }

    @Override
    public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r,
@@ -64,47 +77,9 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        ActivityClient.getInstance().activityPaused(getActivityToken());
    }

    // ObjectPoolItem implementation

    private PauseActivityItem() {}

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

        return instance;
    }

    /** Obtain an instance initialized with default params. */
    @NonNull
    public static PauseActivityItem obtain(@NonNull IBinder activityToken) {
        return obtain(activityToken, false /* finished */, false /* userLeaving */,
                true /* dontReport */, false /* autoEnteringPip*/);
    }

    @Override
    public void recycle() {
        super.recycle();
        mFinished = false;
        mUserLeaving = false;
        mDontReport = false;
        mAutoEnteringPip = 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);
@@ -114,7 +89,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        dest.writeBoolean(mAutoEnteringPip);
    }

    /** Read from Parcel. */
    /** Reads from Parcel. */
    private PauseActivityItem(@NonNull Parcel in) {
        super(in);
        mFinished = in.readBoolean();
+10 −29
Original line number Diff line number Diff line
@@ -29,13 +29,19 @@ import android.os.Trace;

/**
 * Request to move an activity to started and visible state.
 *
 * @hide
 */
public class StartActivityItem extends ActivityLifecycleItem {

    private static final String TAG = "StartActivityItem";
    @Nullable
    private final SceneTransitionInfo mSceneTransitionInfo;

    private SceneTransitionInfo mSceneTransitionInfo;
    public StartActivityItem(@NonNull IBinder activityToken,
            @Nullable SceneTransitionInfo sceneTransitionInfo) {
        super(activityToken);
        mSceneTransitionInfo = sceneTransitionInfo;
    }

    @Override
    public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r,
@@ -50,41 +56,16 @@ public class StartActivityItem extends ActivityLifecycleItem {
        return ON_START;
    }

    // ObjectPoolItem implementation

    private StartActivityItem() {}

    /** Obtain an instance initialized with provided params. */
    @NonNull
    public static StartActivityItem obtain(@NonNull IBinder activityToken,
            @Nullable SceneTransitionInfo sceneTransitionInfo) {
        StartActivityItem instance = ObjectPool.obtain(StartActivityItem.class);
        if (instance == null) {
            instance = new StartActivityItem();
        }
        instance.setActivityToken(activityToken);
        instance.mSceneTransitionInfo = sceneTransitionInfo;

        return instance;
    }

    @Override
    public void recycle() {
        super.recycle();
        mSceneTransitionInfo = null;
        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.writeTypedObject(mSceneTransitionInfo, flags);
    }

    /** Read from Parcel. */
    /** Reads from Parcel. */
    private StartActivityItem(@NonNull Parcel in) {
        super(in);
        mSceneTransitionInfo = in.readTypedObject(SceneTransitionInfo.CREATOR);
Loading