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
This commit is contained in:
Gaurav Bhola
2023-03-21 20:00:01 -07:00
parent 76c7fbbe4f
commit abf6371574

View File

@@ -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;