moved db calls made from UI into serial background thread

This commit is contained in:
Daniel Gultsch 2015-10-29 17:20:01 +01:00
parent ef7857ac8d
commit 8553d5a563
1 changed files with 21 additions and 5 deletions

View File

@ -1417,7 +1417,13 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
if (account.getXmppConnection() != null) { if (account.getXmppConnection() != null) {
this.disconnect(account, true); this.disconnect(account, true);
} }
databaseBackend.deleteAccount(account); Runnable runnable = new Runnable() {
@Override
public void run() {
databaseBackend.deleteAccount(account);
}
};
mDatabaseExecutor.execute(runnable);
this.accounts.remove(account); this.accounts.remove(account);
updateAccountUi(); updateAccountUi();
getNotificationService().updateErrorNotification(); getNotificationService().updateErrorNotification();
@ -2617,8 +2623,17 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
public void markRead(final Conversation conversation) { public void markRead(final Conversation conversation) {
mNotificationService.clear(conversation); mNotificationService.clear(conversation);
for (Message message : conversation.markRead()) { final List<Message> readMessages = conversation.markRead();
databaseBackend.updateMessage(message); if (readMessages.size() > 0) {
Runnable runnable = new Runnable() {
@Override
public void run() {
for (Message message : readMessages) {
databaseBackend.updateMessage(message);
}
}
};
mDatabaseExecutor.execute(runnable);
} }
updateUnreadCountBadge(); updateUnreadCountBadge();
} }
@ -2834,12 +2849,13 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
conversation.clearMessages(); conversation.clearMessages();
conversation.setHasMessagesLeftOnServer(false); //avoid messages getting loaded through mam conversation.setHasMessagesLeftOnServer(false); //avoid messages getting loaded through mam
conversation.resetLastMessageTransmitted(); conversation.resetLastMessageTransmitted();
new Thread(new Runnable() { Runnable runnable = new Runnable() {
@Override @Override
public void run() { public void run() {
databaseBackend.deleteMessagesInConversation(conversation); databaseBackend.deleteMessagesInConversation(conversation);
} }
}).start(); };
mDatabaseExecutor.execute(runnable);
} }
public void sendBlockRequest(final Blockable blockable) { public void sendBlockRequest(final Blockable blockable) {