@@ -243,6 +243,10 @@ private boolean containsAccountAndUser(AccountAndUser[] accounts, Account accoun
243243 public void updateRunningAccounts () {
244244 mRunningAccounts = AccountManagerService .getSingleton ().getRunningAccounts ();
245245
246+ if (mBootCompleted ) {
247+ doDatabaseCleanup ();
248+ }
249+
246250 for (ActiveSyncContext currentSyncContext : mActiveSyncContexts ) {
247251 if (!containsAccountAndUser (mRunningAccounts ,
248252 currentSyncContext .mSyncOperation .account ,
@@ -258,6 +262,13 @@ public void updateRunningAccounts() {
258262 sendCheckAlarmsMessage ();
259263 }
260264
265+ private void doDatabaseCleanup () {
266+ for (UserInfo user : mUserManager .getUsers ()) {
267+ Account [] accountsForUser = AccountManagerService .getSingleton ().getAccounts (user .id );
268+ mSyncStorageEngine .doDatabaseCleanup (accountsForUser , user .id );
269+ }
270+ }
271+
261272 private BroadcastReceiver mConnectivityIntentReceiver =
262273 new BroadcastReceiver () {
263274 public void onReceive (Context context , Intent intent ) {
@@ -891,12 +902,10 @@ private void onUserStarting(int userId) {
891902
892903 updateRunningAccounts ();
893904
894- final Account [] accounts = AccountManagerService .getSingleton ().getAccounts (userId );
895- mSyncStorageEngine .doDatabaseCleanup (accounts , userId );
896-
897905 mSyncQueue .addPendingOperations (userId );
898906
899907 // Schedule sync for any accounts under started user
908+ final Account [] accounts = AccountManagerService .getSingleton ().getAccounts (userId );
900909 for (Account account : accounts ) {
901910 scheduleSync (account , userId , null , null , 0 /* no delay */ ,
902911 true /* onlyThoseWithUnknownSyncableState */ );
@@ -1619,6 +1628,8 @@ class SyncHandler extends Handler {
16191628 public void onBootCompleted () {
16201629 mBootCompleted = true ;
16211630
1631+ doDatabaseCleanup ();
1632+
16221633 if (mReadyToRunLatch != null ) {
16231634 mReadyToRunLatch .countDown ();
16241635 }
0 commit comments