summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dan Sandler <dsandler@android.com> 2019-10-30 15:01:32 -0400
committer Daniel Sandler <dsandler@android.com> 2019-11-07 14:54:55 +0000
commit899cad855128b20d9cba8a2a2bcb8c9d5ce8d00b (patch)
tree7aa2158490b9a8fef955255c1fa1aa964b9cb658
parent4f05f9790bf04515b0c534ffabf8828437a4b7ab (diff)
Don't retain the filtered list of notifications.
Previously the entire set of notifications was "leaked" until the next call to getNotificationsForCurrentUser(), which currently only happens for certain configuration changes (UiMode, density, fontscale). Bug: 143461605 Test: atest SystemUITests Test: sanity check: boot and switch night mode Change-Id: I39f2c96f848ab92a050aa4bda3ae203fbf99d915 (cherry picked from commit c0c6edee7f46ac2d247f496f83e53f9adfd163e7)
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationData.java9
1 files changed, 4 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationData.java
index 00092929fd49..299511c8f2da 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationData.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationData.java
@@ -57,7 +57,6 @@ public class NotificationData {
private final ArrayMap<String, NotificationEntry> mEntries = new ArrayMap<>();
private final ArrayList<NotificationEntry> mSortedAndFiltered = new ArrayList<>();
- private final ArrayList<NotificationEntry> mFilteredForUser = new ArrayList<>();
private final NotificationGroupManager mGroupManager =
Dependency.get(NotificationGroupManager.class);
@@ -166,20 +165,20 @@ public class NotificationData {
}
public ArrayList<NotificationEntry> getNotificationsForCurrentUser() {
- mFilteredForUser.clear();
-
synchronized (mEntries) {
final int len = mEntries.size();
+ ArrayList<NotificationEntry> filteredForUser = new ArrayList<>(len);
+
for (int i = 0; i < len; i++) {
NotificationEntry entry = mEntries.valueAt(i);
final StatusBarNotification sbn = entry.notification;
if (!getEnvironment().isNotificationForCurrentProfiles(sbn)) {
continue;
}
- mFilteredForUser.add(entry);
+ filteredForUser.add(entry);
}
+ return filteredForUser;
}
- return mFilteredForUser;
}
public NotificationEntry get(String key) {