summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/RecentTasks.java20
1 files changed, 15 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/am/RecentTasks.java b/services/core/java/com/android/server/am/RecentTasks.java
index 9f11def4abdb..6ee165093e39 100644
--- a/services/core/java/com/android/server/am/RecentTasks.java
+++ b/services/core/java/com/android/server/am/RecentTasks.java
@@ -446,13 +446,23 @@ class RecentTasks extends ArrayList<TaskRecord> {
if (i > MAX_RECENT_BITMAPS) {
tr.freeLastThumbnail();
}
- if (task.realActivity == null || tr.realActivity == null ||
- !task.realActivity.equals(tr.realActivity)) {
+ final boolean sameAffinity =
+ task.affinity != null && task.affinity.equals(tr.affinity);
+ final boolean trIsDocument = tr.intent != null && tr.intent.isDocument();
+ final boolean bothDocuments = document && trIsDocument;
+ if (!sameAffinity && !bothDocuments) {
+ // Not the same affinity and not documents. Move along...
continue;
}
- final boolean trIsDocument = tr.intent != null && tr.intent.isDocument();
- if (document && trIsDocument) {
- // These are the same document activity (not necessarily the same doc).
+
+ if (bothDocuments) {
+ // Do these documents belong to the same activity?
+ final boolean sameActivity = task.realActivity != null
+ && tr.realActivity != null
+ && task.realActivity.equals(tr.realActivity);
+ if (!sameActivity) {
+ continue;
+ }
if (maxRecents > 0) {
--maxRecents;
continue;