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();