From f59b813536854c73c344490afadda7b046e34c54 Mon Sep 17 00:00:00 2001 From: "vincent.cw_lee" Date: Tue, 15 Oct 2019 16:25:41 +0800 Subject: [PATCH] Fix: Recent Apps not closing Root Cause: notifyTaskStackChanged() will be invoked on activity pause state or finishing an activity from recents. However, launcher and recent apps are the same activity on android Q by default, so close an app with back button(activity has been finished) and open recent apps from launcher(activity lifecycle does not change) will not notify listeners of task stack changes. Solution: Notify task stack changes directly when user swipe an app away from recent apps. Test: 1. Close an app with back button 2. Go to recent apps and close the same app by swipe it away 3. Exit recent apps with back button 4. Open recent apps again and the app should be removed from the list. Bug: https://issuetracker.google.com/issues/140142873 Change-Id: I1f58747d5164c45d66d53843e0b5b8c54662cdc3 --- services/core/java/com/android/server/wm/ActivityRecord.java | 4 ---- .../java/com/android/server/wm/ActivityStackSupervisor.java | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 371a94356432c..19ebade4297b9 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1541,10 +1541,6 @@ final class ActivityRecord extends ConfigurationContainer { if (stopped) { clearOptionsLocked(); } - - if (mAtmService != null) { - mAtmService.getTaskChangeNotificationController().notifyTaskStackChanged(); - } } UriPermissionOwner getUriPermissionsLocked() { diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java index 19916bc617f44..c8a63568bdc02 100644 --- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java @@ -1794,6 +1794,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { tr.removeTaskActivitiesLocked(pauseImmediately, reason); cleanUpRemovedTaskLocked(tr, killProcess, removeFromRecents); mService.getLockTaskController().clearLockedTask(tr); + mService.getTaskChangeNotificationController().notifyTaskStackChanged(); if (tr.isPersistable) { mService.notifyTaskPersisterLocked(null, true); }