am ea6e1c95: am 1e8e65ee: Stop the SyncAdapterService if no accounts
* commit 'ea6e1c95590ee5072c7dbaefb45a67bdc4fc45ed':
Stop the SyncAdapterService if no accounts
diff --git a/src/com/android/exchange/service/EmailSyncAdapterService.java b/src/com/android/exchange/service/EmailSyncAdapterService.java
index c8b1d5a..b2a5055 100644
--- a/src/com/android/exchange/service/EmailSyncAdapterService.java
+++ b/src/com/android/exchange/service/EmailSyncAdapterService.java
@@ -412,12 +412,13 @@
/**
* {@link AsyncTask} for restarting pings for all accounts that need it.
*/
- private static class RestartPingsTask extends AsyncTask<Void, Void, Void> {
- private static final String PUSH_ACCOUNTS_SELECTION =
- AccountColumns.SYNC_INTERVAL + "=" + Integer.toString(Account.CHECK_INTERVAL_PUSH);
+ private static final String PUSH_ACCOUNTS_SELECTION =
+ AccountColumns.SYNC_INTERVAL + "=" + Integer.toString(Account.CHECK_INTERVAL_PUSH);
+ private class RestartPingsTask extends AsyncTask<Void, Void, Void> {
private final ContentResolver mContentResolver;
private final SyncHandlerSynchronizer mSyncHandlerMap;
+ private boolean mAnyAccounts;
public RestartPingsTask(final ContentResolver contentResolver,
final SyncHandlerSynchronizer syncHandlerMap) {
@@ -431,6 +432,7 @@
Account.CONTENT_PROJECTION, PUSH_ACCOUNTS_SELECTION, null, null);
if (c != null) {
try {
+ mAnyAccounts = (c.getCount() != 0);
while (c.moveToNext()) {
final Account account = new Account();
account.restore(c);
@@ -439,9 +441,19 @@
} finally {
c.close();
}
+ } else {
+ mAnyAccounts = false;
}
return null;
}
+
+ @Override
+ protected void onPostExecute(Void result) {
+ if (!mAnyAccounts) {
+ LogUtils.d(TAG, "stopping for no accounts");
+ EmailSyncAdapterService.this.stopSelf();
+ }
+ }
}
@Override