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

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

Merge "Clear reference to EnterTransitionCoordinator when done"

parents c75ccb89 785334ae
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -197,13 +197,21 @@ class ActivityTransitionState {
        mHasExited = false;
        ArrayList<String> sharedElementNames = mEnterActivityOptions.getSharedElementNames();
        ResultReceiver resultReceiver = mEnterActivityOptions.getResultReceiver();
        if (mEnterActivityOptions.isReturning()) {
        final boolean isReturning = mEnterActivityOptions.isReturning();
        if (isReturning) {
            restoreExitedViews();
            activity.getWindow().getDecorView().setVisibility(View.VISIBLE);
        }
        mEnterTransitionCoordinator = new EnterTransitionCoordinator(activity,
                resultReceiver, sharedElementNames, mEnterActivityOptions.isReturning(),
                mEnterActivityOptions.isCrossTask());
                mEnterActivityOptions.isCrossTask(),
                () -> {
                    if (isReturning) {
                        // once it is done transitioning, we don't need the coordinator --
                        // if we kept it around, it could leak Views
                        mEnterTransitionCoordinator = null;
                    }
                });
        if (mEnterActivityOptions.isCrossTask()) {
            mExitingFrom = new ArrayList<>(mEnterActivityOptions.getSharedElementNames());
            mExitingTo = new ArrayList<>(mEnterActivityOptions.getSharedElementNames());
+14 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.app;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.annotation.NonNull;
import android.app.SharedElementCallback.OnSharedElementsReadyListener;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
@@ -66,13 +67,16 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
    private final boolean mIsCrossTask;
    private Drawable mReplacedBackground;
    private ArrayList<String> mPendingExitNames;
    private Runnable mOnTransitionComplete;

    public EnterTransitionCoordinator(Activity activity, ResultReceiver resultReceiver,
            ArrayList<String> sharedElementNames, boolean isReturning, boolean isCrossTask) {
    EnterTransitionCoordinator(Activity activity, ResultReceiver resultReceiver,
            ArrayList<String> sharedElementNames, boolean isReturning, boolean isCrossTask,
            @NonNull Runnable onTransitionComplete) {
        super(activity.getWindow(), sharedElementNames,
                getListener(activity, isReturning && !isCrossTask), isReturning);
        mActivity = activity;
        mIsCrossTask = isCrossTask;
        mOnTransitionComplete = onTransitionComplete;
        setResultReceiver(resultReceiver);
        prepareEnter();
        Bundle resultReceiverBundle = new Bundle();
@@ -578,6 +582,10 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
                window.setBackgroundDrawable(null);
            }
        }
        if (mOnTransitionComplete != null) {
            mOnTransitionComplete.run();
            mOnTransitionComplete = null;
        }
    }

    private void sharedElementTransitionStarted() {
@@ -672,6 +680,10 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
            mBackgroundAnimator.cancel();
            mBackgroundAnimator = null;
        }
        if (mOnTransitionComplete != null) {
            mOnTransitionComplete.run();
            mOnTransitionComplete = null;
        }
        super.clearState();
    }