OSDN Git Service

Archive a copy of each dismissed notification.
authorDaniel Sandler <dsandler@android.com>
Tue, 21 May 2013 00:56:43 +0000 (20:56 -0400)
committerDaniel Sandler <dsandler@android.com>
Tue, 21 May 2013 04:58:32 +0000 (00:58 -0400)
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

services/java/com/android/server/NotificationManagerService.java

index f9b6eba..111dbb2 100644 (file)
@@ -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());
         }