am 3b3b5b0f: Run the account reconciler every time we start SyncManager

Merge commit '3b3b5b0f2b65bf7efb9474ece2d8d2821beeadc2' into froyo-plus-aosp

* commit '3b3b5b0f2b65bf7efb9474ece2d8d2821beeadc2':
  Run the account reconciler every time we start SyncManager
This commit is contained in:
Andrew Stadler 2010-04-14 22:49:17 -07:00 committed by Android Git Automerger
commit a55d27bae1

View File

@ -921,25 +921,36 @@ public class SyncManager extends Service implements Runnable {
*/ */
public class EasAccountsUpdatedListener implements OnAccountsUpdateListener { public class EasAccountsUpdatedListener implements OnAccountsUpdateListener {
public void onAccountsUpdated(android.accounts.Account[] accounts) { public void onAccountsUpdated(android.accounts.Account[] accounts) {
new Thread() { SyncManager syncManager = INSTANCE;
@Override if (syncManager != null) {
public void run() { syncManager.runAccountReconciler();
SyncManager syncManager = INSTANCE; }
if (syncManager != null) {
android.accounts.Account[] accountMgrList = AccountManager.get(syncManager)
.getAccountsByType(Email.EXCHANGE_ACCOUNT_MANAGER_TYPE);
synchronized (sAccountList) {
// Make sure we have an up-to-date sAccountList
mAccountObserver.onAccountChanged();
reconcileAccountsWithAccountManager(syncManager, sAccountList,
accountMgrList, false, mResolver);
}
}
}
}.start();
} }
} }
/**
* Non-blocking call to run the account reconciler.
* Launches a worker thread, so it may be called from UI thread.
*/
private void runAccountReconciler() {
final SyncManager syncManager = this;
new Thread() {
@Override
public void run() {
android.accounts.Account[] accountMgrList = AccountManager.get(syncManager)
.getAccountsByType(Email.EXCHANGE_ACCOUNT_MANAGER_TYPE);
synchronized (sAccountList) {
// Make sure we have an up-to-date sAccountList
if (mAccountObserver != null) {
mAccountObserver.onAccountChanged();
}
reconcileAccountsWithAccountManager(syncManager, sAccountList,
accountMgrList, false, mResolver);
}
}
}.start();
}
protected static void log(String str) { protected static void log(String str) {
if (Eas.USER_LOG) { if (Eas.USER_LOG) {
Log.d(TAG, str); Log.d(TAG, str);
@ -1059,6 +1070,9 @@ public class SyncManager extends Service implements Runnable {
throw new RuntimeException(); throw new RuntimeException();
} }
} }
// Run the reconciler and clean up any mismatched accounts - if we weren't running when
// accounts were deleted, it won't have been called.
runAccountReconciler();
} }
@Override @Override