update unread count badge only when necessary

This commit is contained in:
Daniel Gultsch 2015-05-26 12:00:38 +02:00
parent 9debf8037b
commit 6059ed4738
1 changed files with 11 additions and 7 deletions

View File

@ -227,7 +227,8 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
private final List<String> mInProgressAvatarFetches = new ArrayList<>(); private final List<String> mInProgressAvatarFetches = new ArrayList<>();
private MessageArchiveService mMessageArchiveService = new MessageArchiveService(this); private MessageArchiveService mMessageArchiveService = new MessageArchiveService(this);
private OnConversationUpdate mOnConversationUpdate = null; private OnConversationUpdate mOnConversationUpdate = null;
private Integer convChangedListenerCount = 0; private int convChangedListenerCount = 0;
private int unreadCount = 0;
private OnAccountUpdate mOnAccountUpdate = null; private OnAccountUpdate mOnAccountUpdate = null;
private OnStatusChanged statusListener = new OnStatusChanged() { private OnStatusChanged statusListener = new OnStatusChanged() {
@ -2277,13 +2278,16 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
updateUnreadCountBadge(); updateUnreadCountBadge();
} }
public void updateUnreadCountBadge() { public synchronized void updateUnreadCountBadge() {
int count = unreadCount(); int count = unreadCount();
Log.d(Config.LOGTAG, "update unread count to " + count); if (unreadCount != count) {
if (count > 0) { Log.d(Config.LOGTAG, "update unread count to " + count);
ShortcutBadger.with(getApplicationContext()).count(count); if (count > 0) {
} else { ShortcutBadger.with(getApplicationContext()).count(count);
ShortcutBadger.with(getApplicationContext()).remove(); } else {
ShortcutBadger.with(getApplicationContext()).remove();
}
unreadCount = count;
} }
} }