diff options
| author | 2019-10-30 15:01:32 -0400 | |
|---|---|---|
| committer | 2019-11-07 14:54:55 +0000 | |
| commit | 899cad855128b20d9cba8a2a2bcb8c9d5ce8d00b (patch) | |
| tree | 7aa2158490b9a8fef955255c1fa1aa964b9cb658 | |
| parent | 4f05f9790bf04515b0c534ffabf8828437a4b7ab (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.java | 9 |
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) { |