Update notification listener after API change

Bug: 15415840
Change-Id: I99ea1855f58bbd2747453fb0d06a3e0d2c7063fa
diff --git a/NotificationListenerSample/src/com/android/example/notificationlistener/Listener.java b/NotificationListenerSample/src/com/android/example/notificationlistener/Listener.java
index 2f9853e..466b084 100644
--- a/NotificationListenerSample/src/com/android/example/notificationlistener/Listener.java
+++ b/NotificationListenerSample/src/com/android/example/notificationlistener/Listener.java
@@ -60,6 +60,8 @@
         return sNotifications;
     }
 
+    private final Ranking mTmpRanking = new Ranking();
+
     private class Delta {
         final StatusBarNotification mSbn;
         final RankingMap mRankingMap;
@@ -72,11 +74,15 @@
 
     private final Comparator<StatusBarNotification> mRankingComparator =
             new Comparator<StatusBarNotification>() {
+
+                private final Ranking mLhsRanking = new Ranking();
+                private final Ranking mRhsRanking = new Ranking();
+
                 @Override
                 public int compare(StatusBarNotification lhs, StatusBarNotification rhs) {
-                    Ranking lhsRanking = mRankingMap.getRanking(lhs.getKey());
-                    Ranking rhsRanking = mRankingMap.getRanking(rhs.getKey());
-                    return Integer.compare(lhsRanking.getRank(), rhsRanking.getRank());
+                    mRankingMap.getRanking(lhs.getKey(), mLhsRanking);
+                    mRankingMap.getRanking(rhs.getKey(), mRhsRanking);
+                    return Integer.compare(mLhsRanking.getRank(), mRhsRanking.getRank());
                 }
             };
 
@@ -103,15 +109,16 @@
             if (msg.obj instanceof Delta) {
                 delta = (Delta) msg.obj;
             }
+
             switch (msg.what) {
                 case MSG_NOTIFY:
                     Log.i(TAG, "notify: " + delta.mSbn.getKey());
                     synchronized (sNotifications) {
-                        Ranking ranking = mRankingMap.getRanking(delta.mSbn.getKey());
-                        if (ranking == null) {
+                        boolean exists = mRankingMap.getRanking(delta.mSbn.getKey(), mTmpRanking);
+                        if (!exists) {
                             sNotifications.add(delta.mSbn);
                         } else {
-                            int position = ranking.getRank();
+                            int position = mTmpRanking.getRank();
                             sNotifications.set(position, delta.mSbn);
                         }
                         mRankingMap = delta.mRankingMap;
@@ -126,10 +133,9 @@
                 case MSG_CANCEL:
                     Log.i(TAG, "remove: " + delta.mSbn.getKey());
                     synchronized (sNotifications) {
-                        Ranking ranking = mRankingMap.getRanking(delta.mSbn.getKey());
-                        int position = ranking.getRank();
-                        if (position != -1) {
-                            sNotifications.remove(position);
+                        boolean exists = mRankingMap.getRanking(delta.mSbn.getKey(), mTmpRanking);
+                        if (exists) {
+                            sNotifications.remove(mTmpRanking.getRank());
                         }
                         mRankingMap = delta.mRankingMap;
                         Collections.sort(sNotifications, mRankingComparator);
@@ -158,8 +164,8 @@
                 case MSG_DISMISS:
                     if (msg.obj instanceof String) {
                         final String key = (String) msg.obj;
-                        Ranking ranking = mRankingMap.getRanking(key);
-                        StatusBarNotification sbn = sNotifications.get(ranking.getRank());
+                        mRankingMap.getRanking(key, mTmpRanking);
+                        StatusBarNotification sbn = sNotifications.get(mTmpRanking.getRank());
                         if ((sbn.getNotification().flags & Notification.FLAG_AUTO_CANCEL) != 0 &&
                                 sbn.getNotification().contentIntent != null) {
                             try {
@@ -175,9 +181,8 @@
                 case MSG_LAUNCH:
                     if (msg.obj instanceof String) {
                         final String key = (String) msg.obj;
-                        Ranking ranking = mRankingMap.getRanking(delta.mSbn.getKey());
-                        int position = ranking.getRank();
-                        StatusBarNotification sbn = sNotifications.get(position);
+                        mRankingMap.getRanking(key, mTmpRanking);
+                        StatusBarNotification sbn = sNotifications.get(mTmpRanking.getRank());
                         if (sbn.getNotification().contentIntent != null) {
                             try {
                                 sbn.getNotification().contentIntent.send();