diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java index f750815d663f7..4022718865e01 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java @@ -91,6 +91,9 @@ public class Divider extends SystemUI { } private void removeDivider() { + if (mView != null) { + mView.onDividerRemoved(); + } mWindowManager.remove(); } diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index 2bda1dfb5f88d..09f459b0b07b8 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -162,6 +162,9 @@ public class DividerView extends FrameLayout implements OnTouchListener, private DividerState mState; private final SurfaceFlingerVsyncChoreographer mSfChoreographer; + // The view is removed or in the process of been removed from the system. + private boolean mRemoved; + private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { @@ -323,6 +326,11 @@ public class DividerView extends FrameLayout implements OnTouchListener, EventBus.getDefault().unregister(this); } + void onDividerRemoved() { + mRemoved = true; + mHandler.removeMessages(MSG_RESIZE_STACK); + } + @Override public WindowInsets onApplyWindowInsets(WindowInsets insets) { if (mStableInsets.left != insets.getStableInsetLeft() @@ -927,6 +935,10 @@ public class DividerView extends FrameLayout implements OnTouchListener, } public void resizeStack(int position, int taskPosition, SnapTarget taskSnapTarget) { + if (mRemoved) { + // This divider view has been removed so shouldn't have any additional influence. + return; + } calculateBoundsForPosition(position, mDockSide, mDockedRect); if (mDockedRect.equals(mLastResizeRect) && !mEntranceAnimationRunning) {