avoid some unnecessary notification updates
This commit is contained in:
parent
78c5c508b3
commit
1e0f288e6a
|
@ -225,12 +225,11 @@ public class NotificationService {
|
||||||
}
|
}
|
||||||
synchronized (notifications) {
|
synchronized (notifications) {
|
||||||
markAsReadIfHasDirectReply(conversation);
|
markAsReadIfHasDirectReply(conversation);
|
||||||
//TODO: only update if something actually got removed?
|
if (notifications.remove(conversation.getUuid()) != null) {
|
||||||
notifications.remove(conversation.getUuid());
|
|
||||||
final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mXmppConnectionService);
|
final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mXmppConnectionService);
|
||||||
//TODO on later androids (that have multiple Conversations) maybe canceling is enough + update summary notification
|
|
||||||
notificationManager.cancel(conversation.getUuid(), NOTIFICATION_ID);
|
notificationManager.cancel(conversation.getUuid(), NOTIFICATION_ID);
|
||||||
updateNotification(false);
|
updateNotification(false, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,6 +253,10 @@ public class NotificationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateNotification(final boolean notify) {
|
public void updateNotification(final boolean notify) {
|
||||||
|
updateNotification(notify, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateNotification(final boolean notify, boolean summaryOnly) {
|
||||||
final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mXmppConnectionService);
|
final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mXmppConnectionService);
|
||||||
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService);
|
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService);
|
||||||
|
|
||||||
|
@ -271,12 +274,14 @@ public class NotificationService {
|
||||||
} else {
|
} else {
|
||||||
mBuilder = buildMultipleConversation();
|
mBuilder = buildMultipleConversation();
|
||||||
modifyForSoundVibrationAndLight(mBuilder, notify, preferences);
|
modifyForSoundVibrationAndLight(mBuilder, notify, preferences);
|
||||||
|
if (!summaryOnly) {
|
||||||
for (Map.Entry<String, ArrayList<Message>> entry : notifications.entrySet()) {
|
for (Map.Entry<String, ArrayList<Message>> entry : notifications.entrySet()) {
|
||||||
Builder singleBuilder = buildSingleConversations(entry.getValue());
|
Builder singleBuilder = buildSingleConversations(entry.getValue());
|
||||||
singleBuilder.setGroup(CONVERSATIONS_GROUP);
|
singleBuilder.setGroup(CONVERSATIONS_GROUP);
|
||||||
setNotificationColor(singleBuilder);
|
setNotificationColor(singleBuilder);
|
||||||
notificationManager.notify(entry.getKey(), NOTIFICATION_ID, singleBuilder.build());
|
notificationManager.notify(entry.getKey(), NOTIFICATION_ID, singleBuilder.build());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
notificationManager.notify(NOTIFICATION_ID, mBuilder.build());
|
notificationManager.notify(NOTIFICATION_ID, mBuilder.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue