summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2015-07-21 14:38:04 +0000
committer Android Git Automerger <android-git-automerger@android.com> 2015-07-21 14:38:04 +0000
commit7dcad6a5d426e1a243e36cbd084c60bc8038c56b (patch)
treed4c5a61acb64e6251a13176c339cfec41c8242f9
parent6564934d1a3f1020184c48bdddbe91321652a0b2 (diff)
parente99f20f5873c00b35f2407e28e06ff9119f85088 (diff)
am e99f20f5: Merge "Don\'t duplicate recent tasks of the same affinity." into mnc-dev
* commit 'e99f20f5873c00b35f2407e28e06ff9119f85088': Don't duplicate recent tasks of the same affinity.
-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;