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
