aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index ebb14669..cfb2d50d 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -227,7 +227,8 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
private final List<String> mInProgressAvatarFetches = new ArrayList<>();
private MessageArchiveService mMessageArchiveService = new MessageArchiveService(this);
private OnConversationUpdate mOnConversationUpdate = null;
- private Integer convChangedListenerCount = 0;
+ private int convChangedListenerCount = 0;
+ private int unreadCount = 0;
private OnAccountUpdate mOnAccountUpdate = null;
private OnStatusChanged statusListener = new OnStatusChanged() {
@@ -2277,13 +2278,16 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
updateUnreadCountBadge();
}
- public void updateUnreadCountBadge() {
+ public synchronized void updateUnreadCountBadge() {
int count = unreadCount();
- Log.d(Config.LOGTAG, "update unread count to " + count);
- if (count > 0) {
- ShortcutBadger.with(getApplicationContext()).count(count);
- } else {
- ShortcutBadger.with(getApplicationContext()).remove();
+ if (unreadCount != count) {
+ Log.d(Config.LOGTAG, "update unread count to " + count);
+ if (count > 0) {
+ ShortcutBadger.with(getApplicationContext()).count(count);
+ } else {
+ ShortcutBadger.with(getApplicationContext()).remove();
+ }
+ unreadCount = count;
}
}