From 739281a727ff56912b25645e1ca3aa9d1144a201 Mon Sep 17 00:00:00 2001 From: Danny Baumann Date: Wed, 17 Jun 2015 08:56:31 +0200 Subject: [PATCH] Don't auto-register IDLE when gaining connection. We request a sync in this case anyway, which in turn starts the IDLE connection anyway. If we're starting IDLE earlier, we do unnecessary work as the sync will tear it down just a few moments later. Change-Id: I9b99023fbe1aaab72638f6ef9d29223d9a325b7b --- .../android/email/service/ImapService.java | 36 ++----------------- .../service/LegacyImapSyncAdapterService.java | 14 -------- 2 files changed, 3 insertions(+), 47 deletions(-) diff --git a/provider_src/com/android/email/service/ImapService.java b/provider_src/com/android/email/service/ImapService.java index 8a61da31b..fd65fd423 100644 --- a/provider_src/com/android/email/service/ImapService.java +++ b/provider_src/com/android/email/service/ImapService.java @@ -548,10 +548,9 @@ public class ImapService extends Service { sExecutor.execute(new Runnable() { @Override public void run() { - ImapService.registerAllImapIdleMailboxes(mContext, mService); - - // Since we could have missed some changes, request a sync - // for the IDLEd accounts + // Initiate a sync for all IDLEd accounts, since there might have + // been changes while we lost connectivity. At the end of the sync + // the IDLE connection will be re-established. ContentResolver cr = mContext.getContentResolver(); Cursor c = cr.query(Account.CONTENT_URI, Account.CONTENT_PROJECTION, null, null, null); @@ -1010,35 +1009,6 @@ public class ImapService extends Service { return mBinder; } - protected static void registerAllImapIdleMailboxes(Context context, IEmailService service) { - ContentResolver cr = context.getContentResolver(); - Cursor c = cr.query(Account.CONTENT_URI, Account.CONTENT_PROJECTION, null, null, null); - if (c != null) { - try { - while (c.moveToNext()) { - final Account account = new Account(); - account.restore(c); - - // Only imap push accounts - if (account.getSyncInterval() != Account.CHECK_INTERVAL_PUSH) { - continue; - } - if (!isLegacyImapProtocol(context, account)) { - continue; - } - - try { - service.pushModify(account.mId); - } catch (RemoteException ex) { - LogUtils.d(LOG_TAG, "Failed to call pushModify for account " + account.mId); - } - } - } finally { - c.close(); - } - } - } - private static void requestSync(Context context, Account account, long mailbox, boolean full) { final EmailServiceUtils.EmailServiceInfo info = EmailServiceUtils.getServiceInfoForAccount( context, account.mId); diff --git a/provider_src/com/android/email/service/LegacyImapSyncAdapterService.java b/provider_src/com/android/email/service/LegacyImapSyncAdapterService.java index 1b5a36b61..2cb0e3743 100644 --- a/provider_src/com/android/email/service/LegacyImapSyncAdapterService.java +++ b/provider_src/com/android/email/service/LegacyImapSyncAdapterService.java @@ -18,9 +18,6 @@ package com.android.email.service; import static com.android.emailcommon.Logging.LOG_TAG; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - import android.content.AbstractThreadedSyncAdapter; import android.content.ComponentName; import android.content.ContentProviderClient; @@ -48,8 +45,6 @@ public class LegacyImapSyncAdapterService extends PopImapSyncAdapterService { // seconds for it to appear. If it takes longer than that, we will fail the sync. private static final long MAX_WAIT_FOR_SERVICE_MS = 10 * DateUtils.SECOND_IN_MILLIS; - private static final ExecutorService sExecutor = Executors.newCachedThreadPool(); - private IEmailService mImapService; private final ServiceConnection mConnection = new ServiceConnection() { @@ -61,15 +56,6 @@ public class LegacyImapSyncAdapterService extends PopImapSyncAdapterService { synchronized (mConnection) { mImapService = IEmailService.Stub.asInterface(binder); mConnection.notify(); - - // We need to run this task in the background (not in UI-Thread) - sExecutor.execute(new Runnable() { - @Override - public void run() { - final Context context = LegacyImapSyncAdapterService.this; - ImapService.registerAllImapIdleMailboxes(context, mImapService); - } - }); } }