Some cleanup for handler invalidation
- Cancel reapplyWindowTransformAnim when STATE_HANDLER_INVALIDATED - Set mActivity and mRecentsView = null in invalidateHandlerWithLauncher() instead of posting from invalidateHandler() - Just in case, ignore onActivityInit() if we're already invalidated Test: Tap repeatedly in nav region in an app, no crash Fixes: 186983662 Change-Id: I3c005099b46ebb7c9203bcfcceedf48679dd1965
This commit is contained in:
parent
b90a951fed
commit
95e62812b2
|
@ -340,6 +340,10 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
|||
}
|
||||
|
||||
protected boolean onActivityInit(Boolean alreadyOnHome) {
|
||||
if (mStateCallback.hasStates(STATE_HANDLER_INVALIDATED)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
T createdActivity = mActivityInterface.getCreatedActivity();
|
||||
if (createdActivity != null) {
|
||||
initTransitionEndpoints(createdActivity.getDeviceProfile());
|
||||
|
@ -571,6 +575,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
|||
}
|
||||
});
|
||||
reapplyWindowTransformAnim.setDuration(RECENTS_ATTACH_DURATION).start();
|
||||
mStateCallback.runOnceAtState(STATE_HANDLER_INVALIDATED,
|
||||
reapplyWindowTransformAnim::cancel);
|
||||
} else {
|
||||
applyWindowTransform();
|
||||
}
|
||||
|
@ -1376,12 +1382,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
|||
mActivityInitListener.unregister();
|
||||
ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mActivityRestartListener);
|
||||
mTaskSnapshot = null;
|
||||
mHandler.post(() -> {
|
||||
// Defer clearing the activity since invalidation can happen over multiple callbacks
|
||||
// ie. invalidateHandlerWithLauncher()
|
||||
mActivity = null;
|
||||
mRecentsView = null;
|
||||
});
|
||||
}
|
||||
|
||||
private void invalidateHandlerWithLauncher() {
|
||||
|
@ -1392,6 +1392,12 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
|||
|
||||
mRecentsView.removeOnScrollChangedListener(mOnRecentsScrollListener);
|
||||
resetLauncherListeners();
|
||||
|
||||
mHandler.post(() -> {
|
||||
// Defer clearing the activity since invalidation can happen over multiple callbacks.
|
||||
mActivity = null;
|
||||
mRecentsView = null;
|
||||
});
|
||||
}
|
||||
|
||||
private void endLauncherTransitionController() {
|
||||
|
|
Loading…
Reference in New Issue