Hiding pinned stack tasks from overview
Bug: 25381158
Change-Id: Iad442b7f5dc49109529cb5dab2168b19837af6e3
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 681ed5b..8637dde 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1237,6 +1237,18 @@
public static final int RECENT_IGNORE_HOME_STACK_TASKS = 0x0008;
/**
+ * Ignores all tasks that are on the docked stack.
+ * @hide
+ */
+ public static final int RECENT_INGORE_DOCKED_STACK_TASKS = 0x0010;
+
+ /**
+ * Ignores all tasks that are on the pinned stack.
+ * @hide
+ */
+ public static final int RECENT_INGORE_PINNED_STACK_TASKS = 0x0020;
+
+ /**
* <p></p>Return a list of the tasks that the user has recently launched, with
* the most recent being first and older ones after in order.
*
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
index 6a9268a8..35e53f6 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
@@ -194,6 +194,8 @@
int numTasksToQuery = Math.max(minNumTasksToQuery, numLatestTasks);
List<ActivityManager.RecentTaskInfo> tasks = mAm.getRecentTasksForUser(numTasksToQuery,
ActivityManager.RECENT_IGNORE_HOME_STACK_TASKS |
+ ActivityManager.RECENT_INGORE_DOCKED_STACK_TASKS |
+ ActivityManager.RECENT_INGORE_PINNED_STACK_TASKS |
ActivityManager.RECENT_IGNORE_UNAVAILABLE |
ActivityManager.RECENT_INCLUDE_PROFILES |
ActivityManager.RECENT_WITH_EXCLUDED, userId);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java
index d06012e..6f003ab 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java
@@ -352,28 +352,28 @@
@Override
public boolean acceptTask(SparseArray<Task> taskIdMap, Task t, int index) {
if (t.isAffiliatedTask()) {
- // If this task is affiliated with another parent in the stack, then the historical state of this
- // task depends on the state of the parent task
+ // If this task is affiliated with another parent in the stack, then the
+ // historical state of this task depends on the state of the parent task
Task parentTask = taskIdMap.get(t.affiliationTaskId);
if (parentTask != null) {
t = parentTask;
}
}
- return !t.isHistorical && !SystemServicesProxy.isDockedStack(t.key.stackId);
+ return !t.isHistorical;
}
});
mHistoryTaskList.setFilter(new TaskFilter() {
@Override
public boolean acceptTask(SparseArray<Task> taskIdMap, Task t, int index) {
if (t.isAffiliatedTask()) {
- // If this task is affiliated with another parent in the stack, then the historical state of this
- // task depends on the state of the parent task
+ // If this task is affiliated with another parent in the stack, then the
+ // historical state of this task depends on the state of the parent task
Task parentTask = taskIdMap.get(t.affiliationTaskId);
if (parentTask != null) {
t = parentTask;
}
}
- return t.isHistorical && !SystemServicesProxy.isDockedStack(t.key.stackId);
+ return t.isHistorical;
}
});
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 1d555c6..e1c8256 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -8768,6 +8768,20 @@
continue;
}
}
+ if ((flags & ActivityManager.RECENT_INGORE_DOCKED_STACK_TASKS) != 0) {
+ if (tr.stack != null && tr.stack.isDockedStack()) {
+ if (DEBUG_RECENTS) Slog.d(TAG_RECENTS,
+ "Skipping, docked stack task: " + tr);
+ continue;
+ }
+ }
+ if ((flags & ActivityManager.RECENT_INGORE_PINNED_STACK_TASKS) != 0) {
+ if (tr.stack != null && tr.stack.isPinnedStack()) {
+ if (DEBUG_RECENTS) Slog.d(TAG_RECENTS,
+ "Skipping, pinned stack task: " + tr);
+ continue;
+ }
+ }
if (tr.autoRemoveRecents && tr.getTopActivity() == null) {
// Don't include auto remove tasks that are finished or finishing.
if (DEBUG_RECENTS) Slog.d(TAG_RECENTS,
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 59acccd..582a1fe 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -520,6 +520,14 @@
return mStackId == HOME_STACK_ID;
}
+ final boolean isDockedStack() {
+ return mStackId == DOCKED_STACK_ID;
+ }
+
+ final boolean isPinnedStack() {
+ return mStackId == PINNED_STACK_ID;
+ }
+
final boolean isOnHomeDisplay() {
return isAttached() &&
mActivityContainer.mActivityDisplay.mDisplayId == Display.DEFAULT_DISPLAY;