From 26b81d594ceb3026f64e8fa6980044fcb867d05c Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Mon, 20 May 2013 20:56:43 -0400 Subject: [PATCH] Archive a copy of each dismissed notification. We don't want to save all the heavyweight stuff, but we can't lighten the notification in place because there may be other active references. Bug: 8839246 Change-Id: Id6dcc1cf5ae196ee3e42908d6b3ec4e928e9f0c5 --- .../com/android/server/NotificationManagerService.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java index f9b6eba68b60a..111dbb2376183 100644 --- a/services/java/com/android/server/NotificationManagerService.java +++ b/services/java/com/android/server/NotificationManagerService.java @@ -283,13 +283,14 @@ public class NotificationManagerService extends INotificationManager.Stub } public void record(StatusBarNotification nr) { - // Nuke heavy parts of notification before storing in archive - nr.getNotification().lightenPayload(); - if (mBuffer.size() == BUFFER_SIZE) { mBuffer.removeFirst(); } - mBuffer.addLast(nr); + + // We don't want to store the heavy bits of the notification in the archive, + // but other clients in the system process might be using the object, so we + // store a (lightened) copy. + mBuffer.addLast(nr.cloneLight()); }