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

Commit 0422e8d9 authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Remove unnecessary configChangeFlags

The field is only non-zero when relaunching activity, i.e.
sending a ActivityRelaunchItem. So the flag is unnecessary
to be a field of ActivityRecord and other lifecycle items
don't need an always-zero field.

Bug: 163976519
Test: atest ObjectPoolTests ClientTransactionItemTest
Change-Id: I6741807ff7b6b3fee2acfcb711ea3bba8c9f71ed
parent f1b65f66
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -4558,7 +4558,7 @@ public final class ActivityThread extends ClientTransactionHandler
    private void schedulePauseWithUserLeavingHint(ActivityClientRecord r) {
        final ClientTransaction transaction = ClientTransaction.obtain(mAppThread);
        final PauseActivityItem pauseActivityItem = PauseActivityItem.obtain(r.token,
                r.activity.isFinishing(), /* userLeaving */ true, r.activity.mConfigChangeFlags,
                r.activity.isFinishing(), /* userLeaving */ true,
                /* dontReport */ false, /* autoEnteringPip */ false);
        transaction.addTransactionItem(pauseActivityItem);
        executeTransaction(transaction);
@@ -5432,13 +5432,12 @@ public final class ActivityThread extends ClientTransactionHandler

    @Override
    public void handlePauseActivity(ActivityClientRecord r, boolean finished, boolean userLeaving,
            int configChanges, boolean autoEnteringPip, PendingTransactionActions pendingActions,
            boolean autoEnteringPip, PendingTransactionActions pendingActions,
            String reason) {
        if (userLeaving) {
            performUserLeavingActivity(r);
        }

        r.activity.mConfigChangeFlags |= configChanges;
        if (autoEnteringPip) {
            // Set mIsInPictureInPictureMode earlier in case of auto-enter-pip, see also
            // {@link Activity#enterPictureInPictureMode(PictureInPictureParams)}.
@@ -5687,9 +5686,8 @@ public final class ActivityThread extends ClientTransactionHandler
    }

    @Override
    public void handleStopActivity(ActivityClientRecord r, int configChanges,
    public void handleStopActivity(ActivityClientRecord r,
            PendingTransactionActions pendingActions, boolean finalStateRequest, String reason) {
        r.activity.mConfigChangeFlags |= configChanges;

        final StopInfo stopInfo = new StopInfo();
        performStopActivityInner(r, stopInfo, true /* saveState */, finalStateRequest,
@@ -5859,11 +5857,10 @@ public final class ActivityThread extends ClientTransactionHandler

    /** Core implementation of activity destroy call. */
    void performDestroyActivity(ActivityClientRecord r, boolean finishing,
            int configChanges, boolean getNonConfigInstance, String reason) {
            boolean getNonConfigInstance, String reason) {
        Class<? extends Activity> activityClass;
        if (localLOGV) Slog.v(TAG, "Performing finish of " + r);
        activityClass = r.activity.getClass();
        r.activity.mConfigChangeFlags |= configChanges;
        if (finishing) {
            r.activity.mFinished = true;
        }
@@ -5928,9 +5925,9 @@ public final class ActivityThread extends ClientTransactionHandler
    }

    @Override
    public void handleDestroyActivity(ActivityClientRecord r, boolean finishing, int configChanges,
    public void handleDestroyActivity(ActivityClientRecord r, boolean finishing,
            boolean getNonConfigInstance, String reason) {
        performDestroyActivity(r, finishing, configChanges, getNonConfigInstance, reason);
        performDestroyActivity(r, finishing, getNonConfigInstance, reason);
        cleanUpPendingRemoveWindows(r, finishing);
        WindowManager wm = r.activity.getWindowManager();
        View v = r.activity.mDecor;
@@ -6130,7 +6127,7 @@ public final class ActivityThread extends ClientTransactionHandler

        r.activity.mChangingConfigurations = true;

        handleRelaunchActivityInner(r, configChanges, tmp.pendingResults, tmp.pendingIntents,
        handleRelaunchActivityInner(r, tmp.pendingResults, tmp.pendingIntents,
                pendingActions, tmp.startsNotResumed, tmp.overrideConfig, tmp.mActivityWindowInfo,
                "handleRelaunchActivity");
    }
@@ -6199,7 +6196,7 @@ public final class ActivityThread extends ClientTransactionHandler
        executeTransaction(transaction);
    }

    private void handleRelaunchActivityInner(@NonNull ActivityClientRecord r, int configChanges,
    private void handleRelaunchActivityInner(@NonNull ActivityClientRecord r,
            @Nullable List<ResultInfo> pendingResults,
            @Nullable List<ReferrerIntent> pendingIntents,
            @NonNull PendingTransactionActions pendingActions, boolean startsNotResumed,
@@ -6215,7 +6212,7 @@ public final class ActivityThread extends ClientTransactionHandler
            callActivityOnStop(r, true /* saveState */, reason);
        }

        handleDestroyActivity(r, false, configChanges, true, reason);
        handleDestroyActivity(r, false /* finishing */, true /* getNonConfigInstance */, reason);

        r.activity = null;
        r.window = null;
+3 −4
Original line number Diff line number Diff line
@@ -114,11 +114,11 @@ public abstract class ClientTransactionHandler {

    /** Destroy the activity. */
    public abstract void handleDestroyActivity(@NonNull ActivityClientRecord r, boolean finishing,
            int configChanges, boolean getNonConfigInstance, String reason);
            boolean getNonConfigInstance, String reason);

    /** Pause the activity. */
    public abstract void handlePauseActivity(@NonNull ActivityClientRecord r, boolean finished,
            boolean userLeaving, int configChanges, boolean autoEnteringPip,
            boolean userLeaving, boolean autoEnteringPip,
            PendingTransactionActions pendingActions, String reason);

    /**
@@ -146,14 +146,13 @@ public abstract class ClientTransactionHandler {
    /**
     * Stop the activity.
     * @param r Target activity record.
     * @param configChanges Activity configuration changes.
     * @param pendingActions Pending actions to be used on this or later stages of activity
     *                       transaction.
     * @param finalStateRequest Flag indicating if this call is handling final lifecycle state
     *                          request for a transaction.
     * @param reason Reason for performing this operation.
     */
    public abstract void handleStopActivity(@NonNull ActivityClientRecord r, int configChanges,
    public abstract void handleStopActivity(@NonNull ActivityClientRecord r,
            PendingTransactionActions pendingActions, boolean finalStateRequest, String reason);

    /** Report that activity was stopped to server. */
+2 −2
Original line number Diff line number Diff line
@@ -413,7 +413,7 @@ public class LocalActivityManager {
        if (localLOGV) Log.v(TAG, r.id + ": destroying");
        final ActivityClientRecord clientRecord = mActivityThread.getActivityClient(r);
        if (clientRecord != null) {
            mActivityThread.performDestroyActivity(clientRecord, finish, 0 /* configChanges */,
            mActivityThread.performDestroyActivity(clientRecord, finish,
                    false /* getNonConfigInstance */, "LocalActivityManager::performDestroy");
        }
        r.activity = null;
@@ -684,7 +684,7 @@ public class LocalActivityManager {
                if (localLOGV) Log.v(TAG, r.id + ": no corresponding record");
                continue;
            }
            mActivityThread.performDestroyActivity(clientRecord, finishing, 0 /* configChanges */,
            mActivityThread.performDestroyActivity(clientRecord, finishing,
                    false /* getNonConfigInstance */, "LocalActivityManager::dispatchDestroy");
        }
        mActivities.clear();
+4 −12
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import android.os.Trace;
public class DestroyActivityItem extends ActivityLifecycleItem {

    private boolean mFinished;
    private int mConfigChanges;

    @Override
    public void preExecute(@NonNull ClientTransactionHandler client) {
@@ -44,7 +43,7 @@ public class DestroyActivityItem extends ActivityLifecycleItem {
    public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r,
            @NonNull PendingTransactionActions pendingActions) {
        Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityDestroy");
        client.handleDestroyActivity(r, mFinished, mConfigChanges,
        client.handleDestroyActivity(r, mFinished,
                false /* getNonConfigInstance */, "DestroyActivityItem");
        Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
    }
@@ -67,15 +66,13 @@ public class DestroyActivityItem extends ActivityLifecycleItem {

    /** Obtain an instance initialized with provided params. */
    @NonNull
    public static DestroyActivityItem obtain(@NonNull IBinder activityToken, boolean finished,
            int configChanges) {
    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;
        instance.mConfigChanges = configChanges;

        return instance;
    }
@@ -84,7 +81,6 @@ public class DestroyActivityItem extends ActivityLifecycleItem {
    public void recycle() {
        super.recycle();
        mFinished = false;
        mConfigChanges = 0;
        ObjectPool.recycle(this);
    }

@@ -95,14 +91,12 @@ public class DestroyActivityItem extends ActivityLifecycleItem {
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        super.writeToParcel(dest, flags);
        dest.writeBoolean(mFinished);
        dest.writeInt(mConfigChanges);
    }

    /** Read from Parcel. */
    private DestroyActivityItem(@NonNull Parcel in) {
        super(in);
        mFinished = in.readBoolean();
        mConfigChanges = in.readInt();
    }

    public static final @NonNull Creator<DestroyActivityItem> CREATOR = new Creator<>() {
@@ -124,7 +118,7 @@ public class DestroyActivityItem extends ActivityLifecycleItem {
            return false;
        }
        final DestroyActivityItem other = (DestroyActivityItem) o;
        return mFinished == other.mFinished && mConfigChanges == other.mConfigChanges;
        return mFinished == other.mFinished;
    }

    @Override
@@ -132,14 +126,12 @@ public class DestroyActivityItem extends ActivityLifecycleItem {
        int result = 17;
        result = 31 * result + super.hashCode();
        result = 31 * result + (mFinished ? 1 : 0);
        result = 31 * result + mConfigChanges;
        return result;
    }

    @Override
    public String toString() {
        return "DestroyActivityItem{" + super.toString()
                + ",finished=" + mFinished
                + ",mConfigChanges=" + mConfigChanges + "}";
                + ",finished=" + mFinished + "}";
    }
}
+4 −11
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ public class PauseActivityItem extends ActivityLifecycleItem {

    private boolean mFinished;
    private boolean mUserLeaving;
    private int mConfigChanges;
    private boolean mDontReport;
    private boolean mAutoEnteringPip;

@@ -45,7 +44,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
    public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r,
            @NonNull PendingTransactionActions pendingActions) {
        Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityPause");
        client.handlePauseActivity(r, mFinished, mUserLeaving, mConfigChanges, mAutoEnteringPip,
        client.handlePauseActivity(r, mFinished, mUserLeaving, mAutoEnteringPip,
                pendingActions, "PAUSE_ACTIVITY_ITEM");
        Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
    }
@@ -72,7 +71,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
    /** Obtain an instance initialized with provided params. */
    @NonNull
    public static PauseActivityItem obtain(@NonNull IBinder activityToken, boolean finished,
            boolean userLeaving, int configChanges, boolean dontReport, boolean autoEnteringPip) {
            boolean userLeaving, boolean dontReport, boolean autoEnteringPip) {
        PauseActivityItem instance = ObjectPool.obtain(PauseActivityItem.class);
        if (instance == null) {
            instance = new PauseActivityItem();
@@ -80,7 +79,6 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        instance.setActivityToken(activityToken);
        instance.mFinished = finished;
        instance.mUserLeaving = userLeaving;
        instance.mConfigChanges = configChanges;
        instance.mDontReport = dontReport;
        instance.mAutoEnteringPip = autoEnteringPip;

@@ -91,7 +89,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
    @NonNull
    public static PauseActivityItem obtain(@NonNull IBinder activityToken) {
        return obtain(activityToken, false /* finished */, false /* userLeaving */,
                0 /* configChanges */, true /* dontReport */, false /* autoEnteringPip*/);
                true /* dontReport */, false /* autoEnteringPip*/);
    }

    @Override
@@ -99,7 +97,6 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        super.recycle();
        mFinished = false;
        mUserLeaving = false;
        mConfigChanges = 0;
        mDontReport = false;
        mAutoEnteringPip = false;
        ObjectPool.recycle(this);
@@ -113,7 +110,6 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        super.writeToParcel(dest, flags);
        dest.writeBoolean(mFinished);
        dest.writeBoolean(mUserLeaving);
        dest.writeInt(mConfigChanges);
        dest.writeBoolean(mDontReport);
        dest.writeBoolean(mAutoEnteringPip);
    }
@@ -123,7 +119,6 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        super(in);
        mFinished = in.readBoolean();
        mUserLeaving = in.readBoolean();
        mConfigChanges = in.readInt();
        mDontReport = in.readBoolean();
        mAutoEnteringPip = in.readBoolean();
    }
@@ -148,7 +143,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        }
        final PauseActivityItem other = (PauseActivityItem) o;
        return mFinished == other.mFinished && mUserLeaving == other.mUserLeaving
                && mConfigChanges == other.mConfigChanges && mDontReport == other.mDontReport
                && mDontReport == other.mDontReport
                && mAutoEnteringPip == other.mAutoEnteringPip;
    }

@@ -158,7 +153,6 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        result = 31 * result + super.hashCode();
        result = 31 * result + (mFinished ? 1 : 0);
        result = 31 * result + (mUserLeaving ? 1 : 0);
        result = 31 * result + mConfigChanges;
        result = 31 * result + (mDontReport ? 1 : 0);
        result = 31 * result + (mAutoEnteringPip ? 1 : 0);
        return result;
@@ -169,7 +163,6 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        return "PauseActivityItem{" + super.toString()
                + ",finished=" + mFinished
                + ",userLeaving=" + mUserLeaving
                + ",configChanges=" + mConfigChanges
                + ",dontReport=" + mDontReport
                + ",autoEnteringPip=" + mAutoEnteringPip + "}";
    }
Loading