From b6297b6a46a4bb7498e0bb4ccccfc57c3f2dc22f Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Mon, 20 Jun 2022 09:05:51 +0000 Subject: Do nothing when a finishing Activity configuration changed Primary Activity and secondary Activity were both finished while starting another Activity with FLAG_ACTIVITY_CLEAR_TASK flag. The secondary container was then removed and the primary container was resized to fullscreen while the organizer gets the secondary TaskFragment info-changed event. And the primary container was removed by primary TaskFragment info-changed event afterward. Since the primary Activity was resized before completely being destroyed. The organizer got an onActivityConfigurationChanged c allback and resulted in another placeholder activity being launched. Bug: 236272623 Test: making Duo calls Change-Id: I851828f739a4937725510d99cbdfae9ed212a023 --- .../androidx/window/extensions/embedding/SplitController.java | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libs/WindowManager') diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java index 0ed23cb9ba6d..8ffe0c12f8ca 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java @@ -642,6 +642,11 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen } private void onActivityConfigurationChanged(@NonNull Activity activity) { + if (activity.isFinishing()) { + // Do nothing if the activity is currently finishing. + return; + } + if (isInPictureInPicture(activity)) { // We don't embed activity when it is in PIP. return; @@ -1115,6 +1120,10 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen } boolean launchPlaceholderIfNecessary(@NonNull Activity activity, boolean isOnCreated) { + if (activity.isFinishing()) { + return false; + } + final TaskFragmentContainer container = getContainerWithActivity(activity); // Don't launch placeholder if the container is occluded. if (container != null && container != getTopActiveContainer(container.getTaskId())) { -- cgit v1.2.3-59-g8ed1b