From 6e1ce8ccb89a72ffddec4d8af7170f6b20d651a9 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Fri, 18 Jun 2021 12:41:22 -0700 Subject: [PATCH] Fixing out of order taskbar callbacks OnCreate can come before onDestroy for a previous activity which can cause the callbacks for taskbar to get cleared Bug: 190170303 Test: Presubmit Change-Id: I48334605384d4604043a50ffc3d137f84575148a --- .../launcher3/BaseQuickstepLauncher.java | 2 +- .../taskbar/LauncherTaskbarUIController.java | 2 +- .../launcher3/taskbar/TaskbarManager.java | 23 ++++++++++++++----- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java index 872633ca48..4eb2d53b46 100644 --- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java @@ -132,7 +132,7 @@ public abstract class BaseQuickstepLauncher extends Launcher unbindService(mTisBinderConnection); if (mTaskbarManager != null) { - mTaskbarManager.setLauncher(null); + mTaskbarManager.clearLauncher(this); } super.onDestroy(); } diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 7d0afe1aba..12ac0f5692 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -98,11 +98,11 @@ public class LauncherTaskbarUIController extends TaskbarUIController { @Override protected void onDestroy() { + onLauncherResumedOrPaused(false); mIconAlignmentForResumedState.finishAnimation(); mIconAlignmentForGestureState.finishAnimation(); mHotseatController.cleanup(); - setTaskbarViewVisible(true); mLauncher.getHotseat().setIconsAlpha(1f); mLauncher.setTaskbarUIController(null); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 9f5ea50480..788a36b31a 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -26,7 +26,7 @@ import android.content.Context; import android.hardware.display.DisplayManager; import android.view.Display; -import androidx.annotation.Nullable; +import androidx.annotation.NonNull; import com.android.launcher3.BaseQuickstepLauncher; import com.android.launcher3.DeviceProfile; @@ -103,14 +103,25 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen } /** - * Sets or clears a launcher to act as taskbar callback + * Sets a launcher to act as taskbar callback */ - public void setLauncher(@Nullable BaseQuickstepLauncher launcher) { + public void setLauncher(@NonNull BaseQuickstepLauncher launcher) { mLauncher = launcher; if (mTaskbarActivityContext != null) { - mTaskbarActivityContext.setUIController(mLauncher == null - ? TaskbarUIController.DEFAULT - : new LauncherTaskbarUIController(launcher, mTaskbarActivityContext)); + mTaskbarActivityContext.setUIController( + new LauncherTaskbarUIController(launcher, mTaskbarActivityContext)); + } + } + + /** + * Clears a previously set Launcher + */ + public void clearLauncher(@NonNull BaseQuickstepLauncher launcher) { + if (mLauncher == launcher) { + mLauncher = null; + if (mTaskbarActivityContext != null) { + mTaskbarActivityContext.setUIController(TaskbarUIController.DEFAULT); + } } }