diff options
| -rw-r--r-- | core/java/android/content/SyncManager.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java index e0e2995..1e4ad76 100644 --- a/core/java/android/content/SyncManager.java +++ b/core/java/android/content/SyncManager.java @@ -243,6 +243,10 @@ public class SyncManager { public void updateRunningAccounts() { mRunningAccounts = AccountManagerService.getSingleton().getRunningAccounts(); + if (mBootCompleted) { + doDatabaseCleanup(); + } + for (ActiveSyncContext currentSyncContext : mActiveSyncContexts) { if (!containsAccountAndUser(mRunningAccounts, currentSyncContext.mSyncOperation.account, @@ -258,6 +262,13 @@ public class SyncManager { sendCheckAlarmsMessage(); } + private void doDatabaseCleanup() { + for (UserInfo user : mUserManager.getUsers()) { + Account[] accountsForUser = AccountManagerService.getSingleton().getAccounts(user.id); + mSyncStorageEngine.doDatabaseCleanup(accountsForUser, user.id); + } + } + private BroadcastReceiver mConnectivityIntentReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { @@ -891,12 +902,10 @@ public class SyncManager { updateRunningAccounts(); - final Account[] accounts = AccountManagerService.getSingleton().getAccounts(userId); - mSyncStorageEngine.doDatabaseCleanup(accounts, userId); - mSyncQueue.addPendingOperations(userId); // Schedule sync for any accounts under started user + final Account[] accounts = AccountManagerService.getSingleton().getAccounts(userId); for (Account account : accounts) { scheduleSync(account, userId, null, null, 0 /* no delay */, true /* onlyThoseWithUnknownSyncableState */); @@ -1619,6 +1628,8 @@ public class SyncManager { public void onBootCompleted() { mBootCompleted = true; + doDatabaseCleanup(); + if (mReadyToRunLatch != null) { mReadyToRunLatch.countDown(); } |
