diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 43eb8c014174e..fe6ac48b31f77 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -148,6 +148,7 @@ import static com.android.server.wm.ActivityTaskManagerService.DUMP_RECENTS_CMD; import static com.android.server.wm.ActivityTaskManagerService.DUMP_RECENTS_SHORT_CMD; import static com.android.server.wm.ActivityTaskManagerService.DUMP_STARTER_CMD; import static com.android.server.wm.ActivityTaskManagerService.DUMP_TOP_RESUMED_ACTIVITY; +import static com.android.server.wm.ActivityTaskManagerService.DUMP_VISIBLE_ACTIVITIES; import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_NONE; import static com.android.server.wm.ActivityTaskManagerService.relaunchReasonToString; @@ -9546,7 +9547,8 @@ public class ActivityManagerService extends IActivityManager.Stub || DUMP_LASTANR_CMD.equals(cmd) || DUMP_LASTANR_TRACES_CMD.equals(cmd) || DUMP_STARTER_CMD.equals(cmd) || DUMP_CONTAINERS_CMD.equals(cmd) || DUMP_RECENTS_CMD.equals(cmd) || DUMP_RECENTS_SHORT_CMD.equals(cmd) - || DUMP_TOP_RESUMED_ACTIVITY.equals(cmd)) { + || DUMP_TOP_RESUMED_ACTIVITY.equals(cmd) + || DUMP_VISIBLE_ACTIVITIES.equals(cmd)) { mAtmInternal.dump( cmd, fd, pw, args, opti, true /* dumpAll */, dumpClient, dumpPackage); } else if ("binder-proxies".equals(cmd)) { diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 4b0debf506e81..2e52ffb313a03 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -331,6 +331,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { public static final String DUMP_RECENTS_CMD = "recents"; public static final String DUMP_RECENTS_SHORT_CMD = "r"; public static final String DUMP_TOP_RESUMED_ACTIVITY = "top-resumed"; + public static final String DUMP_VISIBLE_ACTIVITIES = "visible"; /** This activity is not being relaunched, or being relaunched for a non-resize reason. */ public static final int RELAUNCH_REASON_NONE = 0; @@ -4063,6 +4064,25 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } + void dumpVisibleActivitiesLocked(PrintWriter pw) { + pw.println("ACTIVITY MANAGER VISIBLE ACTIVITIES (dumpsys activity visible)"); + ArrayList activities = + mRootWindowContainer.getDumpActivities("all", /* dumpVisibleRootTasksOnly */ true, + /* dumpFocusedRootTaskOnly */ false, UserHandle.USER_ALL); + boolean needSeparator = false; + for (int i = activities.size() - 1; i >= 0; i--) { + ActivityRecord activity = activities.get(i); + if (!activity.isVisible()) { + continue; + } + if (needSeparator) { + pw.println(); + } + activity.dump(pw, "", true); + needSeparator = true; + } + } + void dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, String[] args, int opti, boolean dumpAll, boolean dumpClient, String dumpPackage) { dumpActivitiesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage, @@ -6295,6 +6315,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } else if (DUMP_TOP_RESUMED_ACTIVITY.equals(cmd)) { dumpTopResumedActivityLocked(pw); + } else if (DUMP_VISIBLE_ACTIVITIES.equals(cmd)) { + dumpVisibleActivitiesLocked(pw); } } }