diff options
| -rw-r--r-- | services/core/java/com/android/server/am/RecentTasks.java | 20 |
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; |