Fix blocking task switch when 3P launcher is used.
Bug: 232984498 Test: manual 1. install 3P launcher and set it as default. 2. swipe up to start task switcher. 3. tap a task screenshot to start an activity. 4. verifity animation starts immediately. Change-Id: I547c8aae25f6d1701758a72ca95bb9186dd1479f
This commit is contained in:
@@ -1229,13 +1229,23 @@ public class AppTransitionController {
|
||||
"Delaying app transition for screen rotation animation to finish");
|
||||
return false;
|
||||
}
|
||||
final boolean isRecentsInOpening = mDisplayContent.mOpeningApps.stream().anyMatch(
|
||||
ConfigurationContainer::isActivityTypeRecents);
|
||||
for (int i = 0; i < apps.size(); i++) {
|
||||
WindowContainer wc = apps.valueAt(i);
|
||||
final ActivityRecord activity = getAppFromContainer(wc);
|
||||
if (activity == null) {
|
||||
continue;
|
||||
}
|
||||
if (activity.isAnimating(PARENTS, ANIMATION_TYPE_RECENTS)) {
|
||||
// In order to avoid visual clutter caused by a conflict between app transition
|
||||
// animation and recents animation, app transition is delayed until recents finishes.
|
||||
// One exceptional case. When 3P launcher is used and a user taps a task screenshot in
|
||||
// task switcher (isRecentsInOpening=true), app transition must start even though
|
||||
// recents is running. Otherwise app transition is blocked until timeout (b/232984498).
|
||||
// When 1P launcher is used, this animation is controlled by the launcher outside of
|
||||
// the app transition, so delaying app transition doesn't cause visible delay. After
|
||||
// recents finishes, app transition is handled just to commit visibility on apps.
|
||||
if (!isRecentsInOpening && activity.isAnimating(PARENTS, ANIMATION_TYPE_RECENTS)) {
|
||||
ProtoLog.v(WM_DEBUG_APP_TRANSITIONS,
|
||||
"Delaying app transition for recents animation to finish");
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user