moved roster loading to async task as well
This commit is contained in:
		
							parent
							
								
									62b15a5d26
								
							
						
					
					
						commit
						67d5ee6b71
					
				| 
						 | 
				
			
			@ -16,6 +16,7 @@ import android.os.Binder;
 | 
			
		|||
import android.os.Bundle;
 | 
			
		||||
import android.os.FileObserver;
 | 
			
		||||
import android.os.IBinder;
 | 
			
		||||
import android.os.Looper;
 | 
			
		||||
import android.os.PowerManager;
 | 
			
		||||
import android.os.PowerManager.WakeLock;
 | 
			
		||||
import android.os.SystemClock;
 | 
			
		||||
| 
						 | 
				
			
			@ -277,9 +278,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 | 
			
		|||
	private LruCache<String, Bitmap> mBitmapCache;
 | 
			
		||||
	private Thread mPhoneContactMergerThread;
 | 
			
		||||
 | 
			
		||||
	private boolean mMessagesInitialized = false;
 | 
			
		||||
	private boolean mRestoredFromDatabase = false;
 | 
			
		||||
	public boolean areMessagesInitialized() {
 | 
			
		||||
		return this.mMessagesInitialized;
 | 
			
		||||
		return this.mRestoredFromDatabase;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public PgpEngine getPgpEngine() {
 | 
			
		||||
| 
						 | 
				
			
			@ -393,7 +394,11 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 | 
			
		|||
		if (action != null) {
 | 
			
		||||
			switch (action) {
 | 
			
		||||
				case ACTION_MERGE_PHONE_CONTACTS:
 | 
			
		||||
					PhoneHelper.loadPhoneContacts(getApplicationContext(), new CopyOnWriteArrayList<Bundle>(), this);
 | 
			
		||||
					if (mRestoredFromDatabase) {
 | 
			
		||||
						PhoneHelper.loadPhoneContacts(getApplicationContext(),
 | 
			
		||||
								new CopyOnWriteArrayList<Bundle>(),
 | 
			
		||||
								this);
 | 
			
		||||
					}
 | 
			
		||||
					return START_STICKY;
 | 
			
		||||
				case Intent.ACTION_SHUTDOWN:
 | 
			
		||||
					logoutAndSave();
 | 
			
		||||
| 
						 | 
				
			
			@ -528,10 +533,8 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 | 
			
		|||
 | 
			
		||||
		for (final Account account : this.accounts) {
 | 
			
		||||
			account.initOtrEngine(this);
 | 
			
		||||
			this.databaseBackend.readRoster(account.getRoster());
 | 
			
		||||
		}
 | 
			
		||||
		initConversations();
 | 
			
		||||
		PhoneHelper.loadPhoneContacts(getApplicationContext(),new CopyOnWriteArrayList<Bundle>(), this);
 | 
			
		||||
		restoreFromDatabase();
 | 
			
		||||
 | 
			
		||||
		getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, contactObserver);
 | 
			
		||||
		this.fileObserver.startWatching();
 | 
			
		||||
| 
						 | 
				
			
			@ -884,7 +887,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 | 
			
		|||
		mPhoneContactMergerThread.start();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private void initConversations() {
 | 
			
		||||
	private void restoreFromDatabase() {
 | 
			
		||||
		synchronized (this.conversations) {
 | 
			
		||||
			final Map<String, Account> accountLookupTable = new Hashtable<>();
 | 
			
		||||
			for (Account account : this.accounts) {
 | 
			
		||||
| 
						 | 
				
			
			@ -898,13 +901,22 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 | 
			
		|||
			new Thread(new Runnable() {
 | 
			
		||||
				@Override
 | 
			
		||||
				public void run() {
 | 
			
		||||
					Log.d(Config.LOGTAG,"start initilizing messages");
 | 
			
		||||
					Log.d(Config.LOGTAG,"restoring roster");
 | 
			
		||||
					for(Account account : accounts) {
 | 
			
		||||
						databaseBackend.readRoster(account.getRoster());
 | 
			
		||||
					}
 | 
			
		||||
					getBitmapCache().evictAll();
 | 
			
		||||
					Looper.prepare();
 | 
			
		||||
					PhoneHelper.loadPhoneContacts(getApplicationContext(),
 | 
			
		||||
							new CopyOnWriteArrayList<Bundle>(),
 | 
			
		||||
							XmppConnectionService.this);
 | 
			
		||||
					Log.d(Config.LOGTAG,"restoring 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");
 | 
			
		||||
					mRestoredFromDatabase = true;
 | 
			
		||||
					Log.d(Config.LOGTAG,"restored all messages");
 | 
			
		||||
					updateConversationUi();
 | 
			
		||||
				}
 | 
			
		||||
			}).start();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue