From abb8c7eff998c16f50cbe9bf37eb255be8f3058b Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Thu, 13 Apr 2017 22:49:12 +0200 Subject: use async message loading only when called from UI --- .../messenger/services/XmppConnectionService.java | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/main/java/de/pixart/messenger/services/XmppConnectionService.java') diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index f2f8a1ba5..2a0aa62dd 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -1542,7 +1542,7 @@ public class XmppConnectionService extends Service { if (conversation != null) { conversation.setBookmark(bookmark); } else if (bookmark.autojoin() && bookmark.getJid() != null && autojoin) { - conversation = findOrCreateConversation(account, bookmark.getJid(), true, true); + conversation = findOrCreateConversation(account, bookmark.getJid(), true, true, false); conversation.setBookmark(bookmark); } } @@ -1809,15 +1809,15 @@ public class XmppConnectionService extends Service { return null; } - public Conversation findOrCreateConversation(Account account, Jid jid, boolean muc) { - return this.findOrCreateConversation(account, jid, muc, false); + public Conversation findOrCreateConversation(Account account, Jid jid, boolean muc, final boolean async) { + return this.findOrCreateConversation(account, jid, muc, false, async); } - public Conversation findOrCreateConversation(final Account account, final Jid jid, final boolean muc, final boolean joinAfterCreate) { - return this.findOrCreateConversation(account, jid, muc, joinAfterCreate, null); + public Conversation findOrCreateConversation(final Account account, final Jid jid, final boolean muc, final boolean joinAfterCreate, final boolean async) { + return this.findOrCreateConversation(account, jid, muc, joinAfterCreate, null, async); } - public Conversation findOrCreateConversation(final Account account, final Jid jid, final boolean muc, final boolean joinAfterCreate, final MessageArchiveService.Query query) { + public Conversation findOrCreateConversation(final Account account, final Jid jid, final boolean muc, final boolean joinAfterCreate, final MessageArchiveService.Query query, final boolean async) { synchronized (this.conversations) { Conversation conversation = find(account, jid); if (conversation != null) { @@ -1856,7 +1856,7 @@ public class XmppConnectionService extends Service { loadMessagesFromDb = false; } final Conversation c = conversation; - mDatabaseExecutor.execute(new Runnable() { + final Runnable runnable = new Runnable() { @Override public void run() { if (loadMessagesFromDb) { @@ -1880,7 +1880,12 @@ public class XmppConnectionService extends Service { joinMuc(c); } } - }); + }; + if (async) { + mDatabaseExecutor.execute(runnable); + } else { + runnable.run(); + } this.conversations.add(conversation); updateConversationUi(); return conversation; @@ -2637,7 +2642,7 @@ public class XmppConnectionService extends Service { return false; } final Jid jid = Jid.fromParts(new BigInteger(64, getRNG()).toString(Character.MAX_RADIX), server, null); - final Conversation conversation = findOrCreateConversation(account, jid, true, false); + final Conversation conversation = findOrCreateConversation(account, jid, true, false, true); joinMuc(conversation, new OnConferenceJoined() { @Override public void onConferenceJoined(final Conversation conversation) { -- cgit v1.2.3