avoid some unnecessary notification updates

This commit is contained in:
Daniel Gultsch 2018-01-22 12:24:10 +01:00
parent 78c5c508b3
commit 1e0f288e6a

View file

@ -225,12 +225,11 @@ public class NotificationService {
}
synchronized (notifications) {
markAsReadIfHasDirectReply(conversation);
//TODO: only update if something actually got removed?
notifications.remove(conversation.getUuid());
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);
updateNotification(false);
if (notifications.remove(conversation.getUuid()) != null) {
final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mXmppConnectionService);
notificationManager.cancel(conversation.getUuid(), NOTIFICATION_ID);
updateNotification(false, true);
}
}
}
@ -254,6 +253,10 @@ public class NotificationService {
}
public void updateNotification(final boolean notify) {
updateNotification(notify, false);
}
public void updateNotification(final boolean notify, boolean summaryOnly) {
final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mXmppConnectionService);
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService);
@ -271,11 +274,13 @@ public class NotificationService {
} else {
mBuilder = buildMultipleConversation();
modifyForSoundVibrationAndLight(mBuilder, notify, preferences);
for(Map.Entry<String,ArrayList<Message>> entry : notifications.entrySet()) {
Builder singleBuilder = buildSingleConversations(entry.getValue());
singleBuilder.setGroup(CONVERSATIONS_GROUP);
setNotificationColor(singleBuilder);
notificationManager.notify(entry.getKey(), NOTIFICATION_ID ,singleBuilder.build());
if (!summaryOnly) {
for (Map.Entry<String, ArrayList<Message>> entry : notifications.entrySet()) {
Builder singleBuilder = buildSingleConversations(entry.getValue());
singleBuilder.setGroup(CONVERSATIONS_GROUP);
setNotificationColor(singleBuilder);
notificationManager.notify(entry.getKey(), NOTIFICATION_ID, singleBuilder.build());
}
}
notificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}