Loading core/java/android/app/ActivityTransitionCoordinator.java +12 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { */ public static final int MSG_SEND_SHARED_ELEMENT_DESTINATION = 108; final private Window mWindow; private Window mWindow; final protected ArrayList<String> mAllSharedElementNames; final protected ArrayList<View> mSharedElements = new ArrayList<View>(); final protected ArrayList<String> mSharedElementNames = new ArrayList<String>(); Loading Loading @@ -507,6 +507,17 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { return bundle; } protected void clearState() { // Clear the state so that we can't hold any references accidentally and leak memory. mWindow = null; mAllSharedElementNames.clear(); mSharedElements.clear(); mSharedElementNames.clear(); mTransitioningViews.clear(); mResultReceiver = null; mPendingTransition = null; } protected long getFadeDuration() { return getWindow().getTransitionBackgroundFadeDuration(); } Loading core/java/android/app/ActivityTransitionState.java +11 −0 Original line number Diff line number Diff line Loading @@ -215,6 +215,17 @@ class ActivityTransitionState { restoreExitedViews(); } public void clear() { mEnteringNames = null; mExitingFrom = null; mExitingTo = null; mExitingToView = null; mCalledExitCoordinator = null; mEnterTransitionCoordinator = null; mEnterActivityOptions = null; mExitTransitionCoordinators = null; } private void restoreExitedViews() { if (mCalledExitCoordinator != null) { mCalledExitCoordinator.resetViews(); Loading core/java/android/app/ExitTransitionCoordinator.java +23 −5 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { transition.addListener(new Transition.TransitionListenerAdapter() { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); setViewVisibility(mSharedElements, View.INVISIBLE); ViewGroupOverlay overlay = getDecor().getOverlay(); if (mSharedElementSnapshots != null) { Loading Loading @@ -196,8 +197,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { @Override public void handleMessage(Message msg) { mIsCanceled = true; mActivity.finish(); mActivity = null; finish(); } }; mHandler.sendEmptyMessageDelayed(MSG_CANCEL, MAX_WAIT_MS); Loading Loading @@ -269,6 +269,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { viewsTransition.addListener(new ContinueTransitionListener() { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); exitTransitionComplete(); if (mIsHidden) { setViewVisibility(mTransitioningViews, View.VISIBLE); Loading @@ -295,6 +296,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { sharedElementTransition.addListener(new ContinueTransitionListener() { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); sharedElementTransitionComplete(); if (mIsHidden) { setViewVisibility(mSharedElements, View.VISIBLE); Loading Loading @@ -364,15 +366,31 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { private void finishIfNecessary() { if (mIsReturning && mExitNotified && mActivity != null && mSharedElementSnapshots == null) { mActivity.finish(); mActivity.overridePendingTransition(0, 0); mActivity = null; finish(); } if (!mIsReturning && mExitNotified) { mActivity = null; // don't need it anymore } } private void finish() { mActivity.mActivityTransitionState.clear(); // Clear the state so that we can't hold any references accidentally and leak memory. mHandler.removeMessages(MSG_CANCEL); mHandler = null; mActivity.finish(); mActivity.overridePendingTransition(0, 0); mActivity = null; mSharedElementBundle = null; if (mBackgroundAnimator != null) { mBackgroundAnimator.cancel(); mBackgroundAnimator = null; } mExitSharedElementBundle = null; mSharedElementSnapshots = null; clearState(); } @Override protected Transition getViewsTransition() { if (mIsReturning) { Loading Loading
core/java/android/app/ActivityTransitionCoordinator.java +12 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { */ public static final int MSG_SEND_SHARED_ELEMENT_DESTINATION = 108; final private Window mWindow; private Window mWindow; final protected ArrayList<String> mAllSharedElementNames; final protected ArrayList<View> mSharedElements = new ArrayList<View>(); final protected ArrayList<String> mSharedElementNames = new ArrayList<String>(); Loading Loading @@ -507,6 +507,17 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { return bundle; } protected void clearState() { // Clear the state so that we can't hold any references accidentally and leak memory. mWindow = null; mAllSharedElementNames.clear(); mSharedElements.clear(); mSharedElementNames.clear(); mTransitioningViews.clear(); mResultReceiver = null; mPendingTransition = null; } protected long getFadeDuration() { return getWindow().getTransitionBackgroundFadeDuration(); } Loading
core/java/android/app/ActivityTransitionState.java +11 −0 Original line number Diff line number Diff line Loading @@ -215,6 +215,17 @@ class ActivityTransitionState { restoreExitedViews(); } public void clear() { mEnteringNames = null; mExitingFrom = null; mExitingTo = null; mExitingToView = null; mCalledExitCoordinator = null; mEnterTransitionCoordinator = null; mEnterActivityOptions = null; mExitTransitionCoordinators = null; } private void restoreExitedViews() { if (mCalledExitCoordinator != null) { mCalledExitCoordinator.resetViews(); Loading
core/java/android/app/ExitTransitionCoordinator.java +23 −5 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { transition.addListener(new Transition.TransitionListenerAdapter() { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); setViewVisibility(mSharedElements, View.INVISIBLE); ViewGroupOverlay overlay = getDecor().getOverlay(); if (mSharedElementSnapshots != null) { Loading Loading @@ -196,8 +197,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { @Override public void handleMessage(Message msg) { mIsCanceled = true; mActivity.finish(); mActivity = null; finish(); } }; mHandler.sendEmptyMessageDelayed(MSG_CANCEL, MAX_WAIT_MS); Loading Loading @@ -269,6 +269,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { viewsTransition.addListener(new ContinueTransitionListener() { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); exitTransitionComplete(); if (mIsHidden) { setViewVisibility(mTransitioningViews, View.VISIBLE); Loading @@ -295,6 +296,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { sharedElementTransition.addListener(new ContinueTransitionListener() { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); sharedElementTransitionComplete(); if (mIsHidden) { setViewVisibility(mSharedElements, View.VISIBLE); Loading Loading @@ -364,15 +366,31 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { private void finishIfNecessary() { if (mIsReturning && mExitNotified && mActivity != null && mSharedElementSnapshots == null) { mActivity.finish(); mActivity.overridePendingTransition(0, 0); mActivity = null; finish(); } if (!mIsReturning && mExitNotified) { mActivity = null; // don't need it anymore } } private void finish() { mActivity.mActivityTransitionState.clear(); // Clear the state so that we can't hold any references accidentally and leak memory. mHandler.removeMessages(MSG_CANCEL); mHandler = null; mActivity.finish(); mActivity.overridePendingTransition(0, 0); mActivity = null; mSharedElementBundle = null; if (mBackgroundAnimator != null) { mBackgroundAnimator.cancel(); mBackgroundAnimator = null; } mExitSharedElementBundle = null; mSharedElementSnapshots = null; clearState(); } @Override protected Transition getViewsTransition() { if (mIsReturning) { Loading