load messages asynchronously

This commit is contained in:
iNPUTmice 2015-02-12 18:53:00 +01:00
parent 45de788773
commit e68c6a1b74
2 changed files with 24 additions and 2 deletions

View File

@ -277,6 +277,11 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
private LruCache<String, Bitmap> mBitmapCache; private LruCache<String, Bitmap> mBitmapCache;
private Thread mPhoneContactMergerThread; private Thread mPhoneContactMergerThread;
private boolean mMessagesInitialized = false;
public boolean areMessagesInitialized() {
return this.mMessagesInitialized;
}
public PgpEngine getPgpEngine() { public PgpEngine getPgpEngine() {
if (pgpServiceConnection.isBound()) { if (pgpServiceConnection.isBound()) {
if (this.mPgpEngine == null) { if (this.mPgpEngine == null) {
@ -889,9 +894,20 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
for (Conversation conversation : this.conversations) { for (Conversation conversation : this.conversations) {
Account account = accountLookupTable.get(conversation.getAccountUuid()); Account account = accountLookupTable.get(conversation.getAccountUuid());
conversation.setAccount(account); conversation.setAccount(account);
conversation.addAll(0, databaseBackend.getMessages(conversation, Config.PAGE_SIZE));
checkDeletedFiles(conversation);
} }
new Thread(new Runnable() {
@Override
public void run() {
Log.d(Config.LOGTAG,"start initilizing messages");
for (Conversation conversation : conversations) {
conversation.addAll(0, databaseBackend.getMessages(conversation, Config.PAGE_SIZE));
checkDeletedFiles(conversation);
}
mMessagesInitialized = true;
Log.d(Config.LOGTAG,"done intilizing old messages");
updateConversationUi();
}
}).start();
} }
} }

View File

@ -659,6 +659,12 @@ public class XmppConnection implements Runnable {
} }
private void sendBindRequest() { private void sendBindRequest() {
while(!mXmppConnectionService.areMessagesInitialized()) {
try {
Thread.sleep(500);
} catch (final InterruptedException ignored) {
}
}
final IqPacket iq = new IqPacket(IqPacket.TYPE.SET); final IqPacket iq = new IqPacket(IqPacket.TYPE.SET);
iq.addChild("bind", "urn:ietf:params:xml:ns:xmpp-bind") iq.addChild("bind", "urn:ietf:params:xml:ns:xmpp-bind")
.addChild("resource").setContent(account.getResource()); .addChild("resource").setContent(account.getResource());