getActivityTokenBelow should exclude finishing activity

This method was introduced in ag/15302841 to check the new launch
activity and the activity below.

However, when launching an activity into split, the organizer may also
call to finish existing activity in split. We don't want to check the
split rule with a finishing activity.

Bug: 190433398
Test: test with demo app
Change-Id: I7f604ddea7c2f68adc3cee52b8872e653d5dad98
This commit is contained in:
Chris Li
2021-08-21 12:25:57 -07:00
parent 50fc335c4b
commit 9c606e2740
2 changed files with 5 additions and 2 deletions

View File

@@ -207,7 +207,8 @@ public class ActivityClient {
}
/**
* Returns the activity token below in the same task if it belongs to the same process.
* Returns the non-finishing activity token below in the same task if it belongs to the same
* process.
*/
@Nullable
public IBinder getActivityTokenBelow(IBinder activityToken) {

View File

@@ -554,7 +554,9 @@ class ActivityClientController extends IActivityClientController.Stub {
if (ar == null) {
return null;
}
final ActivityRecord below = ar.getTask().getActivityBelow(ar);
// Exclude finishing activity.
final ActivityRecord below = ar.getTask().getActivity((r) -> !r.finishing,
ar, false /*includeBoundary*/, true /*traverseTopToBottom*/);
if (below != null && below.getUid() == ar.getUid()) {
return below.appToken.asBinder();
}