mirror of
https://github.com/moparisthebest/Conversations
synced 2024-11-28 19:52:15 -05:00
better aproach on thread saftey
This commit is contained in:
parent
9f9c3d3c2f
commit
45bdadd915
@ -1,9 +1,7 @@
|
|||||||
package eu.siacs.conversations.services;
|
package eu.siacs.conversations.services;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@ -58,25 +56,26 @@ public class NotificationService {
|
|||||||
mList.add(message);
|
mList.add(message);
|
||||||
notifications.put(conversationUuid, mList);
|
notifications.put(conversationUuid, mList);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Account account = message.getConversation().getAccount();
|
Account account = message.getConversation().getAccount();
|
||||||
updateNotification((!(this.mIsInForeground && this.mOpenConversation == null) || !isScreenOn)
|
updateNotification((!(this.mIsInForeground && this.mOpenConversation == null) || !isScreenOn)
|
||||||
&& !account.inGracePeriod());
|
&& !account.inGracePeriod());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void clear() {
|
public void clear() {
|
||||||
synchronized (notifications) {
|
synchronized (notifications) {
|
||||||
notifications.clear();
|
notifications.clear();
|
||||||
}
|
|
||||||
updateNotification(false);
|
updateNotification(false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void clear(Conversation conversation) {
|
public void clear(Conversation conversation) {
|
||||||
synchronized (notifications) {
|
synchronized (notifications) {
|
||||||
notifications.remove(conversation.getUuid());
|
notifications.remove(conversation.getUuid());
|
||||||
}
|
|
||||||
updateNotification(false);
|
updateNotification(false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void updateNotification(boolean notify) {
|
private void updateNotification(boolean notify) {
|
||||||
NotificationManager notificationManager = (NotificationManager) mXmppConnectionService
|
NotificationManager notificationManager = (NotificationManager) mXmppConnectionService
|
||||||
@ -132,11 +131,7 @@ public class NotificationService {
|
|||||||
.getString(R.string.unread_conversations));
|
.getString(R.string.unread_conversations));
|
||||||
StringBuilder names = new StringBuilder();
|
StringBuilder names = new StringBuilder();
|
||||||
Conversation conversation = null;
|
Conversation conversation = null;
|
||||||
Iterator<Entry<String, ArrayList<Message>>> it = notifications
|
for (ArrayList<Message> messages : notifications.values()) {
|
||||||
.entrySet().iterator();
|
|
||||||
while (it.hasNext()) {
|
|
||||||
Entry<String, ArrayList<Message>> entry = it.next();
|
|
||||||
ArrayList<Message> messages = entry.getValue();
|
|
||||||
if (messages.size() > 0) {
|
if (messages.size() > 0) {
|
||||||
conversation = messages.get(0).getConversation();
|
conversation = messages.get(0).getConversation();
|
||||||
String name = conversation.getName();
|
String name = conversation.getName();
|
||||||
@ -148,7 +143,6 @@ public class NotificationService {
|
|||||||
names.append(name);
|
names.append(name);
|
||||||
names.append(", ");
|
names.append(", ");
|
||||||
}
|
}
|
||||||
it.remove();
|
|
||||||
}
|
}
|
||||||
if (names.length() >= 2) {
|
if (names.length() >= 2) {
|
||||||
names.delete(names.length() - 2, names.length());
|
names.delete(names.length() - 2, names.length());
|
||||||
|
Loading…
Reference in New Issue
Block a user