avoid some unnecessary notification updates
This commit is contained in:
parent
78c5c508b3
commit
1e0f288e6a
|
@ -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());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue