diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 0b6e5d312a..ac584bf6cd 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -312,6 +312,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { @Override public void onTaskbarIconLaunched(ItemInfo item) { + super.onTaskbarIconLaunched(item); InstanceId instanceId = new InstanceIdSequence().newInstanceId(); mLauncher.logAppLaunch(mControllers.taskbarActivityContext.getStatsLogManager(), item, instanceId); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 6e746eff58..9b0f8c4993 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -836,15 +836,17 @@ public class TaskbarActivityContext extends BaseTaskbarContext { launchFromTaskbarPreservingSplitIfVisible(recents, info); } - mControllers.uiController.onTaskbarIconLaunched(info); } catch (NullPointerException | ActivityNotFoundException | SecurityException e) { Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT) .show(); Log.e(TAG, "Unable to launch. tag=" + info + " intent=" + intent, e); + return; } + } + mControllers.uiController.onTaskbarIconLaunched(info); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); } } else if (tag instanceof AppInfo) { @@ -858,8 +860,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { taskbarUIController.triggerSecondAppForSplit(info, info.intent, view); } else { launchFromTaskbarPreservingSplitIfVisible(recents, info); - mControllers.uiController.onTaskbarIconLaunched(info); } + mControllers.uiController.onTaskbarIconLaunched(info); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); } else if (tag instanceof ItemClickProxy) { ((ItemClickProxy) tag).onItemClicked(view); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java index 6324715410..76b8b6dcd8 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java @@ -17,6 +17,8 @@ package com.android.launcher3.taskbar; import static android.app.ActivityTaskManager.INVALID_TASK_ID; +import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP; + import android.content.Intent; import android.graphics.drawable.BitmapDrawable; import android.view.MotionEvent; @@ -74,7 +76,13 @@ public class TaskbarUIController { protected void onStashedInAppChanged() { } /** Called when an icon is launched. */ - public void onTaskbarIconLaunched(ItemInfo item) { } + @CallSuper + public void onTaskbarIconLaunched(ItemInfo item) { + // When launching from Taskbar, e.g. from Overview, set FLAG_IN_APP immediately instead of + // waiting for onPause, to reduce potential visual noise during the app open transition. + mControllers.taskbarStashController.updateStateForFlag(FLAG_IN_APP, true); + mControllers.taskbarStashController.applyState(); + } public View getRootView() { return mControllers.taskbarActivityContext.getDragLayer(); @@ -104,7 +112,7 @@ public class TaskbarUIController { public void onExpandPip() { if (mControllers != null) { final TaskbarStashController stashController = mControllers.taskbarStashController; - stashController.updateStateForFlag(TaskbarStashController.FLAG_IN_APP, true); + stashController.updateStateForFlag(FLAG_IN_APP, true); stashController.applyState(); } }