From abf637157466926222713e6cb96cf0303abdcc64 Mon Sep 17 00:00:00 2001 From: Gaurav Bhola Date: Tue, 21 Mar 2023 20:00:01 -0700 Subject: [PATCH] Improve the activity coalescing - 2 Activities shouldn't coalesce if they have different launch bounds. - Launch bounds can be different when activities are started in task views. - When host app triggers start command for multiple activities at the same time, sometimes these activities coalesce into each other leading to an inconsistent task view state. Fix: 274155443 Test: Tested manually on gcar-ui-portrait Change-Id: Ib083da2d5500c81b07885630d08767d512076b66 --- .../core/java/com/android/server/wm/ActivityMetricsLogger.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java index 95fd82ff11544..80d1e1683de15 100644 --- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java @@ -398,6 +398,7 @@ class ActivityMetricsLogger { /** Returns {@code true} if the incoming activity can belong to this transition. */ boolean canCoalesce(ActivityRecord r) { return mLastLaunchedActivity.mDisplayContent == r.mDisplayContent + && mLastLaunchedActivity.getTask().getBounds().equals(r.getTask().getBounds()) && mLastLaunchedActivity.getWindowingMode() == r.getWindowingMode(); } @@ -646,7 +647,7 @@ class ActivityMetricsLogger { void notifyActivityLaunched(@NonNull LaunchingState launchingState, int resultCode, boolean newActivityCreated, @Nullable ActivityRecord launchedActivity, @Nullable ActivityOptions options) { - if (launchedActivity == null) { + if (launchedActivity == null || launchedActivity.getTask() == null) { // The launch is aborted, e.g. intent not resolved, class not found. abort(launchingState, "nothing launched"); return;