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

Commit fd2be2c1 authored by David Srbecky's avatar David Srbecky
Browse files

Revert "Introduce ActivityTransactionItem and reduce null checks"

This reverts commit 9b1e9550.

Reason for revert: Breaks many tests

Bug: 164982975
Change-Id: I86e7b158ae593aab6d73950bbb2b9dc6a7d5093c
parent 9b1e9550
Loading
Loading
Loading
Loading
+253 −191
Original line number Diff line number Diff line
@@ -606,7 +606,7 @@ public final class ActivityThread extends ClientTransactionHandler {
                    throw new IllegalStateException(
                            "Received config update for non-existing activity");
                }
                activity.mMainThread.handleActivityConfigurationChanged(this, overrideConfig,
                activity.mMainThread.handleActivityConfigurationChanged(token, overrideConfig,
                        newDisplayId);
            };
        }
@@ -3457,9 +3457,13 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

    @Override
    public void handleStartActivity(ActivityClientRecord r,
            PendingTransactionActions pendingActions) {
    public void handleStartActivity(IBinder token, PendingTransactionActions pendingActions) {
        final ActivityClientRecord r = mActivities.get(token);
        final Activity activity = r.activity;
        if (r.activity == null) {
            // TODO(lifecycler): What do we do in this case?
            return;
        }
        if (!r.stopped) {
            throw new IllegalStateException("Can't start activity that is not stopped.");
        }
@@ -3665,7 +3669,12 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

    @Override
    public void handleNewIntent(ActivityClientRecord r, List<ReferrerIntent> intents) {
    public void handleNewIntent(IBinder token, List<ReferrerIntent> intents) {
        final ActivityClientRecord r = mActivities.get(token);
        if (r == null) {
            return;
        }

        checkAndBlockForNetworkAccess();
        deliverNewIntents(r, intents);
    }
@@ -3854,7 +3863,13 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

    @Override
    public void handlePictureInPictureRequested(ActivityClientRecord r) {
    public void handlePictureInPictureRequested(IBinder token) {
        final ActivityClientRecord r = mActivities.get(token);
        if (r == null) {
            Log.w(TAG, "Activity to request PIP to no longer exists");
            return;
        }

        final boolean receivedByApp = r.activity.onPictureInPictureRequested();
        if (!receivedByApp) {
            // Previous recommendation was for apps to enter picture-in-picture in
@@ -4384,21 +4399,22 @@ public final class ActivityThread extends ClientTransactionHandler {

    /**
     * Resume the activity.
     * @param r Target activity record.
     * @param token Target activity token.
     * @param finalStateRequest Flag indicating if this is part of final state resolution for a
     *                          transaction.
     * @param reason Reason for performing the action.
     *
     * @return {@code true} that was resumed, {@code false} otherwise.
     * @return The {@link ActivityClientRecord} that was resumed, {@code null} otherwise.
     */
    @VisibleForTesting
    public boolean performResumeActivity(ActivityClientRecord r, boolean finalStateRequest,
    public ActivityClientRecord performResumeActivity(IBinder token, boolean finalStateRequest,
            String reason) {
        final ActivityClientRecord r = mActivities.get(token);
        if (localLOGV) {
            Slog.v(TAG, "Performing resume of " + r + " finished=" + r.activity.mFinished);
        }
        if (r.activity.mFinished) {
            return false;
        if (r == null || r.activity.mFinished) {
            return null;
        }
        if (r.getLifecycleState() == ON_RESUME) {
            if (!finalStateRequest) {
@@ -4412,7 +4428,7 @@ public final class ActivityThread extends ClientTransactionHandler {
                // handle two resume requests for the final state. For cases other than this
                // one, we don't expect it to happen.
            }
            return false;
            return null;
        }
        if (finalStateRequest) {
            r.hideForNow = false;
@@ -4443,7 +4459,7 @@ public final class ActivityThread extends ClientTransactionHandler {
                        + r.intent.getComponent().toShortString() + ": " + e.toString(), e);
            }
        }
        return true;
        return r;
    }

    static final void cleanUpPendingRemoveWindows(ActivityClientRecord r, boolean force) {
@@ -4464,19 +4480,20 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

    @Override
    public void handleResumeActivity(ActivityClientRecord r, boolean finalStateRequest,
            boolean isForward, String reason) {
    public void handleResumeActivity(IBinder token, boolean finalStateRequest, boolean isForward,
            String reason) {
        // If we are getting ready to gc after going to the background, well
        // we are back active so skip it.
        unscheduleGcIdler();
        mSomeActivitiesChanged = true;

        // TODO Push resumeArgs into the activity for consideration
        // skip below steps for double-resume and r.mFinish = true case.
        if (!performResumeActivity(r, finalStateRequest, reason)) {
        final ActivityClientRecord r = performResumeActivity(token, finalStateRequest, reason);
        if (r == null) {
            // We didn't actually resume the activity, so skipping any follow-up actions.
            return;
        }
        if (mActivitiesToBeDestroyed.containsKey(r.token)) {
        if (mActivitiesToBeDestroyed.containsKey(token)) {
            // Although the activity is resumed, it is going to be destroyed. So the following
            // UI operations are unnecessary and also prevents exception because its token may
            // be gone that window manager cannot recognize it. All necessary cleanup actions
@@ -4594,8 +4611,13 @@ public final class ActivityThread extends ClientTransactionHandler {


    @Override
    public void handleTopResumedActivityChanged(ActivityClientRecord r, boolean onTop,
            String reason) {
    public void handleTopResumedActivityChanged(IBinder token, boolean onTop, String reason) {
        ActivityClientRecord r = mActivities.get(token);
        if (r == null || r.activity == null) {
            Slog.w(TAG, "Not found target activity to report position change for token: " + token);
            return;
        }

        if (DEBUG_ORDER) {
            Slog.d(TAG, "Received position change to top: " + onTop + " for activity: " + r);
        }
@@ -4628,8 +4650,10 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

    @Override
    public void handlePauseActivity(ActivityClientRecord r, boolean finished, boolean userLeaving,
    public void handlePauseActivity(IBinder token, boolean finished, boolean userLeaving,
            int configChanges, PendingTransactionActions pendingActions, String reason) {
        ActivityClientRecord r = mActivities.get(token);
        if (r != null) {
            if (userLeaving) {
                performUserLeavingActivity(r);
            }
@@ -4643,6 +4667,7 @@ public final class ActivityThread extends ClientTransactionHandler {
            }
            mSomeActivitiesChanged = true;
        }
    }

    final void performUserLeavingActivity(ActivityClientRecord r) {
        mInstrumentation.callActivityOnPictureInPictureRequested(r.activity);
@@ -4738,11 +4763,8 @@ public final class ActivityThread extends ClientTransactionHandler {
        r.setState(ON_PAUSE);
    }

    // TODO(b/127877792): Make LocalActivityManager call performStopActivityInner. We cannot do this
    // since it's a high usage hidden API.
    /** Called from {@link LocalActivityManager}. */
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 127877792,
            publicAlternatives = "{@code N/A}")
    @UnsupportedAppUsage
    final void performStopActivity(IBinder token, boolean saveState, String reason) {
        ActivityClientRecord r = mActivities.get(token);
        performStopActivityInner(r, null /* stopInfo */, saveState, false /* finalStateRequest */,
@@ -4783,6 +4805,7 @@ public final class ActivityThread extends ClientTransactionHandler {
    private void performStopActivityInner(ActivityClientRecord r, StopInfo info,
            boolean saveState, boolean finalStateRequest, String reason) {
        if (localLOGV) Slog.v(TAG, "Performing stop of " + r);
        if (r != null) {
            if (r.stopped) {
                if (r.activity.mFinished) {
                    // If we are finishing, we won't call onResume() in certain
@@ -4816,6 +4839,7 @@ public final class ActivityThread extends ClientTransactionHandler {
                                + ": " + e.toString(), e);
                    }
                }
            }

            callActivityOnStop(r, saveState, reason);
        }
@@ -4885,8 +4909,9 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

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

        final StopInfo stopInfo = new StopInfo();
@@ -4922,7 +4947,8 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

    @Override
    public void performRestartActivity(ActivityClientRecord r, boolean start) {
    public void performRestartActivity(IBinder token, boolean start) {
        ActivityClientRecord r = mActivities.get(token);
        if (r.stopped) {
            r.activity.performRestart(start, "performRestartActivity");
            if (start) {
@@ -5009,8 +5035,10 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

    @Override
    public void handleSendResult(ActivityClientRecord r, List<ResultInfo> results, String reason) {
    public void handleSendResult(IBinder token, List<ResultInfo> results, String reason) {
        ActivityClientRecord r = mActivities.get(token);
        if (DEBUG_RESULTS) Slog.v(TAG, "Handling send result to " + r);
        if (r != null) {
            final boolean resumed = !r.paused;
            if (!r.activity.mFinished && r.activity.mDecor != null
                    && r.hideForNow && resumed) {
@@ -5046,12 +5074,15 @@ public final class ActivityThread extends ClientTransactionHandler {
                r.activity.performResume(false, reason);
            }
        }
    }

    /** Core implementation of activity destroy call. */
    ActivityClientRecord performDestroyActivity(ActivityClientRecord r, boolean finishing,
    ActivityClientRecord performDestroyActivity(IBinder token, boolean finishing,
            int configChanges, boolean getNonConfigInstance, String reason) {
        ActivityClientRecord r = mActivities.get(token);
        Class<? extends Activity> activityClass = null;
        if (localLOGV) Slog.v(TAG, "Performing finish of " + r);
        if (r != null) {
            activityClass = r.activity.getClass();
            r.activity.mConfigChangeFlags |= configChanges;
            if (finishing) {
@@ -5065,7 +5096,8 @@ public final class ActivityThread extends ClientTransactionHandler {
            }
            if (getNonConfigInstance) {
                try {
                r.lastNonConfigurationInstances = r.activity.retainNonConfigurationInstances();
                    r.lastNonConfigurationInstances
                            = r.activity.retainNonConfigurationInstances();
                } catch (Exception e) {
                    if (!mInstrumentation.onException(r.activity, e)) {
                        throw new RuntimeException(
@@ -5074,16 +5106,14 @@ public final class ActivityThread extends ClientTransactionHandler {
                                + ": " + e.toString(), e);
                    }
                }
            r.setState(ON_DESTROY);
            mLastReportedWindowingMode.remove(r.activity.getActivityToken());
            }
            try {
                r.activity.mCalled = false;
                mInstrumentation.callActivityOnDestroy(r.activity);
                if (!r.activity.mCalled) {
                    throw new SuperNotCalledException(
                    "Activity " + safeToComponentShortString(r.intent)
                            + " did not call through to super.onDestroy()");
                        "Activity " + safeToComponentShortString(r.intent) +
                        " did not call through to super.onDestroy()");
                }
                if (r.window != null) {
                    r.window.closeAllPanels();
@@ -5098,12 +5128,14 @@ public final class ActivityThread extends ClientTransactionHandler {
                }
            }
            r.setState(ON_DESTROY);
            mLastReportedWindowingMode.remove(r.activity.getActivityToken());
        }
        schedulePurgeIdler();
        // updatePendingActivityConfiguration() reads from mActivities to update
        // ActivityClientRecord which runs in a different thread. Protect modifications to
        // mActivities to avoid race.
        synchronized (mResourcesManager) {
            mActivities.remove(r.token);
            mActivities.remove(token);
        }
        StrictMode.decrementExpectedActivityCount(activityClass);
        return r;
@@ -5120,9 +5152,11 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

    @Override
    public void handleDestroyActivity(ActivityClientRecord r, boolean finishing, int configChanges,
    public void handleDestroyActivity(IBinder token, boolean finishing, int configChanges,
            boolean getNonConfigInstance, String reason) {
        r = performDestroyActivity(r, finishing, configChanges, getNonConfigInstance, reason);
        ActivityClientRecord r = performDestroyActivity(token, finishing,
                configChanges, getNonConfigInstance, reason);
        if (r != null) {
            cleanUpPendingRemoveWindows(r, finishing);
            WindowManager wm = r.activity.getWindowManager();
            View v = r.activity.mDecor;
@@ -5153,7 +5187,7 @@ public final class ActivityThread extends ClientTransactionHandler {
                    // will be detached before the final tear down. It should be done now because
                    // some components (e.g. WebView) rely on detach callbacks to perform receiver
                    // unregister and other cleanup.
                WindowManagerGlobal.getInstance().closeAllExceptView(r.token, v,
                    WindowManagerGlobal.getInstance().closeAllExceptView(token, v,
                            r.activity.getClass().getName(), "Activity");
                }
                r.activity.mDecor = null;
@@ -5165,7 +5199,7 @@ public final class ActivityThread extends ClientTransactionHandler {
                // by the app will leak.  Well we try to warning them a lot
                // about leaking windows, because that is a bug, so if they are
                // using this recreate facility then they get to live with leaks.
            WindowManagerGlobal.getInstance().closeAll(r.token,
                WindowManagerGlobal.getInstance().closeAll(token,
                        r.activity.getClass().getName(), "Activity");
            }

@@ -5178,9 +5212,10 @@ public final class ActivityThread extends ClientTransactionHandler {
                ((ContextImpl) c).scheduleFinalCleanup(
                        r.activity.getClass().getName(), "Activity");
            }
        }
        if (finishing) {
            try {
                ActivityTaskManager.getService().activityDestroyed(r.token);
                ActivityTaskManager.getService().activityDestroyed(token);
            } catch (RemoteException ex) {
                throw ex.rethrowFromSystemServer();
            }
@@ -5403,7 +5438,7 @@ public final class ActivityThread extends ClientTransactionHandler {
            callActivityOnStop(r, true /* saveState */, reason);
        }

        handleDestroyActivity(r, false, configChanges, true, reason);
        handleDestroyActivity(r.token, false, configChanges, true, reason);

        r.activity = null;
        r.window = null;
@@ -5431,10 +5466,12 @@ public final class ActivityThread extends ClientTransactionHandler {
    }

    @Override
    public void reportRelaunch(ActivityClientRecord r, PendingTransactionActions pendingActions) {
    public void reportRelaunch(IBinder token, PendingTransactionActions pendingActions) {
        try {
            ActivityTaskManager.getService().activityRelaunched(r.token);
            if (pendingActions.shouldReportRelaunchToWindowManager() && r.window != null) {
            ActivityTaskManager.getService().activityRelaunched(token);
            final ActivityClientRecord r = mActivities.get(token);
            if (pendingActions.shouldReportRelaunchToWindowManager() && r != null
                    && r.window != null) {
                r.window.reportActivityRelaunched();
            }
        } catch (RemoteException e) {
@@ -5593,7 +5630,13 @@ public final class ActivityThread extends ClientTransactionHandler {
     */
    private Configuration performActivityConfigurationChanged(Activity activity,
            Configuration newConfig, Configuration amOverrideConfig, int displayId) {
        if (activity == null) {
            throw new IllegalArgumentException("No activity provided.");
        }
        final IBinder activityToken = activity.getActivityToken();
        if (activityToken == null) {
            throw new IllegalArgumentException("Activity token not set. Is the activity attached?");
        }

        final boolean movedToDifferentDisplay = isDifferentDisplay(activity, displayId);
        boolean shouldReportChange = false;
@@ -5893,8 +5936,20 @@ public final class ActivityThread extends ClientTransactionHandler {
     * processing any configurations older than {@code overrideConfig}.
     */
    @Override
    public void updatePendingActivityConfiguration(ActivityClientRecord r,
    public void updatePendingActivityConfiguration(IBinder activityToken,
            Configuration overrideConfig) {
        final ActivityClientRecord r;
        synchronized (mResourcesManager) {
            r = mActivities.get(activityToken);
        }

        if (r == null) {
            if (DEBUG_CONFIGURATION) {
                Slog.w(TAG, "Not found target activity to update its pending config.");
            }
            return;
        }

        synchronized (r) {
            if (r.mPendingOverrideConfig != null
                    && !r.mPendingOverrideConfig.isOtherSeqNewer(overrideConfig)) {
@@ -5914,14 +5969,21 @@ public final class ActivityThread extends ClientTransactionHandler {
     * if {@link #updatePendingActivityConfiguration(IBinder, Configuration)} has been called with
     * a newer config than {@code overrideConfig}.
     *
     * @param r Target activity record.
     * @param activityToken Target activity token.
     * @param overrideConfig Activity override config.
     * @param displayId Id of the display where activity was moved to, -1 if there was no move and
     *                  value didn't change.
     */
    @Override
    public void handleActivityConfigurationChanged(ActivityClientRecord r,
    public void handleActivityConfigurationChanged(IBinder activityToken,
            @NonNull Configuration overrideConfig, int displayId) {
        ActivityClientRecord r = mActivities.get(activityToken);
        // Check input params.
        if (r == null || r.activity == null) {
            if (DEBUG_CONFIGURATION) Slog.w(TAG, "Not found target activity to report to: " + r);
            return;
        }

        synchronized (r) {
            if (overrideConfig.isOtherSeqNewer(r.mPendingOverrideConfig)) {
                if (DEBUG_CONFIGURATION) {
+24 −30
Original line number Diff line number Diff line
@@ -15,8 +15,6 @@
 */
package android.app;

import android.annotation.NonNull;
import android.app.ActivityThread.ActivityClientRecord;
import android.app.servertransaction.ClientTransaction;
import android.app.servertransaction.ClientTransactionItem;
import android.app.servertransaction.PendingTransactionActions;
@@ -91,38 +89,37 @@ public abstract class ClientTransactionHandler {
    public abstract Map<IBinder, ClientTransactionItem> getActivitiesToBeDestroyed();

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

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

    /**
     * Resume the activity.
     * @param r Target activity record.
     * @param token Target activity token.
     * @param finalStateRequest Flag indicating if this call is handling final lifecycle state
     *                          request for a transaction.
     * @param isForward Flag indicating if next transition is forward.
     * @param reason Reason for performing this operation.
     */
    public abstract void handleResumeActivity(@NonNull ActivityClientRecord r,
            boolean finalStateRequest, boolean isForward, String reason);
    public abstract void handleResumeActivity(IBinder token, boolean finalStateRequest,
            boolean isForward, String reason);

    /**
     * Notify the activity about top resumed state change.
     * @param r Target activity record.
     * @param token Target activity token.
     * @param isTopResumedActivity Current state of the activity, {@code true} if it's the
     *                             topmost resumed activity in the system, {@code false} otherwise.
     * @param reason Reason for performing this operation.
     */
    public abstract void handleTopResumedActivityChanged(@NonNull ActivityClientRecord r,
    public abstract void handleTopResumedActivityChanged(IBinder token,
            boolean isTopResumedActivity, String reason);

    /**
     * Stop the activity.
     * @param r Target activity record.
     * @param token Target activity token.
     * @param configChanges Activity configuration changes.
     * @param pendingActions Pending actions to be used on this or later stages of activity
     *                       transaction.
@@ -130,40 +127,38 @@ public abstract class ClientTransactionHandler {
     *                          request for a transaction.
     * @param reason Reason for performing this operation.
     */
    public abstract void handleStopActivity(@NonNull ActivityClientRecord r, int configChanges,
    public abstract void handleStopActivity(IBinder token, int configChanges,
            PendingTransactionActions pendingActions, boolean finalStateRequest, String reason);

    /** Report that activity was stopped to server. */
    public abstract void reportStop(PendingTransactionActions pendingActions);

    /** Restart the activity after it was stopped. */
    public abstract void performRestartActivity(@NonNull ActivityClientRecord r, boolean start);
    public abstract void performRestartActivity(IBinder token, boolean start);

    /** Set pending activity configuration in case it will be updated by other transaction item. */
    public abstract void updatePendingActivityConfiguration(@NonNull ActivityClientRecord r,
    public abstract void updatePendingActivityConfiguration(IBinder activityToken,
            Configuration overrideConfig);

    /** Deliver activity (override) configuration change. */
    public abstract void handleActivityConfigurationChanged(@NonNull ActivityClientRecord r,
    public abstract void handleActivityConfigurationChanged(IBinder activityToken,
            Configuration overrideConfig, int displayId);

    /** Deliver result from another activity. */
    public abstract void handleSendResult(
            @NonNull ActivityClientRecord r, List<ResultInfo> results, String reason);
    public abstract void handleSendResult(IBinder token, List<ResultInfo> results, String reason);

    /** Deliver new intent. */
    public abstract void handleNewIntent(
            @NonNull ActivityClientRecord r, List<ReferrerIntent> intents);
    public abstract void handleNewIntent(IBinder token, List<ReferrerIntent> intents);

    /** Request that an activity enter picture-in-picture. */
    public abstract void handlePictureInPictureRequested(@NonNull ActivityClientRecord r);
    public abstract void handlePictureInPictureRequested(IBinder token);

    /** Perform activity launch. */
    public abstract Activity handleLaunchActivity(@NonNull ActivityClientRecord r,
    public abstract Activity handleLaunchActivity(ActivityThread.ActivityClientRecord r,
            PendingTransactionActions pendingActions, Intent customIntent);

    /** Perform activity start. */
    public abstract void handleStartActivity(@NonNull ActivityClientRecord r,
    public abstract void handleStartActivity(IBinder token,
            PendingTransactionActions pendingActions);

    /** Get package info. */
@@ -181,7 +176,7 @@ public abstract class ClientTransactionHandler {
     * Get {@link android.app.ActivityThread.ActivityClientRecord} instance that corresponds to the
     * provided token.
     */
    public abstract ActivityClientRecord getActivityClient(IBinder token);
    public abstract ActivityThread.ActivityClientRecord getActivityClient(IBinder token);

    /**
     * Prepare activity relaunch to update internal bookkeeping. This is used to track multiple
@@ -196,7 +191,7 @@ public abstract class ClientTransactionHandler {
     * @return An initialized instance of {@link ActivityThread.ActivityClientRecord} to use during
     *         relaunch, or {@code null} if relaunch cancelled.
     */
    public abstract ActivityClientRecord prepareRelaunchActivity(IBinder token,
    public abstract ActivityThread.ActivityClientRecord prepareRelaunchActivity(IBinder token,
            List<ResultInfo> pendingResults, List<ReferrerIntent> pendingNewIntents,
            int configChanges, MergedConfiguration config, boolean preserveWindow);

@@ -205,15 +200,14 @@ public abstract class ClientTransactionHandler {
     * @param r Activity client record prepared for relaunch.
     * @param pendingActions Pending actions to be used on later stages of activity transaction.
     * */
    public abstract void handleRelaunchActivity(@NonNull ActivityClientRecord r,
    public abstract void handleRelaunchActivity(ActivityThread.ActivityClientRecord r,
            PendingTransactionActions pendingActions);

    /**
     * Report that relaunch request was handled.
     * @param r Target activity record.
     * @param token Target activity token.
     * @param pendingActions Pending actions initialized on earlier stages of activity transaction.
     *                       Used to check if we should report relaunch to WM.
     * */
    public abstract void reportRelaunch(@NonNull ActivityClientRecord r,
            PendingTransactionActions pendingActions);
    public abstract void reportRelaunch(IBinder token, PendingTransactionActions pendingActions);
}
+11 −20

File changed.

Preview size limit exceeded, changes collapsed.

+5 −7

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import java.lang.annotation.RetentionPolicy;
 * Request for lifecycle state that an activity should reach.
 * @hide
 */
public abstract class ActivityLifecycleItem extends ActivityTransactionItem {
public abstract class ActivityLifecycleItem extends ClientTransactionItem {

    @IntDef(prefix = { "UNDEFINED", "PRE_", "ON_" }, value = {
            UNDEFINED,
Loading