Make sure that live tile overlay is added only once.

Users report seeing empty launcher. After adding some logging, live tile
overlay can be added twice and removed only once. I added some logic to
make sure that it can only be added once.

Test: manual
Fixes: 135864059
Change-Id: I9d3325c56e76654f1397cc65979b97a6c0a80aee
(cherry picked from commit d3ef57b4dd)
(cherry picked from commit 4fa6f63ffd)
This commit is contained in:
Tracy Zhou
2019-08-19 22:42:32 -07:00
parent b1ccbd9def
commit 6b272369e7
2 changed files with 21 additions and 5 deletions
@@ -217,6 +217,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
private AnimationFactory mAnimationFactory = (t) -> { };
private LiveTileOverlay mLiveTileOverlay = new LiveTileOverlay();
private boolean mLiveTileOverlayAttached = false;
private boolean mWasLauncherAlreadyVisible;
@@ -323,8 +324,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
mRecentsView = activity.getOverviewPanel();
linkRecentsViewScroll();
mRecentsView.setLiveTileOverlay(mLiveTileOverlay);
mActivity.getRootView().getOverlay().add(mLiveTileOverlay);
addLiveTileOverlay();
mStateCallback.setState(STATE_LAUNCHER_PRESENT);
if (alreadyOnHome) {
@@ -972,7 +972,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
@Override
public void onAnimationStart(Animator animation) {
if (mActivity != null) {
mActivity.getRootView().getOverlay().remove(mLiveTileOverlay);
removeLiveTileOverlay();
}
}
@@ -1071,7 +1071,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
mRecentsView.onGestureAnimationEnd();
mActivity.getRootView().setOnApplyWindowInsetsListener(null);
mActivity.getRootView().getOverlay().remove(mLiveTileOverlay);
removeLiveTileOverlay();
}
private void endLauncherTransitionController() {
@@ -1201,6 +1201,22 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
updateFinalShift();
}
private synchronized void addLiveTileOverlay() {
if (!mLiveTileOverlayAttached) {
mActivity.getRootView().getOverlay().add(mLiveTileOverlay);
mRecentsView.setLiveTileOverlay(mLiveTileOverlay);
mLiveTileOverlayAttached = true;
}
}
private synchronized void removeLiveTileOverlay() {
if (mLiveTileOverlayAttached) {
mActivity.getRootView().getOverlay().remove(mLiveTileOverlay);
mRecentsView.setLiveTileOverlay(null);
mLiveTileOverlayAttached = false;
}
}
public static float getHiddenTargetAlpha(RemoteAnimationTargetCompat app, float expectedAlpha) {
if (!isNotInRecents(app)) {
return 0;
@@ -825,7 +825,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
*/
public void onSwipeUpAnimationSuccess() {
if (getRunningTaskView() != null) {
float startProgress = ENABLE_QUICKSTEP_LIVE_TILE.get()
float startProgress = ENABLE_QUICKSTEP_LIVE_TILE.get() && mLiveTileOverlay != null
? mLiveTileOverlay.cancelIconAnimation()
: 0f;
animateUpRunningTaskIconScale(startProgress);