Don't re-sync when refreshing the IDLE connection.
The refreshing (done every 25 minutes) should be a cheap operation. Instead, do a (quick) re-sync after idling failed. Change-Id: Idfcc775417dc02417142e51ca546c9564c660aab
This commit is contained in:
parent
3e3b7b77b6
commit
d13071399f
|
@ -266,6 +266,10 @@ public class ImapService extends Service {
|
||||||
|
|
||||||
ImapIdleFolderHolder holder = ImapIdleFolderHolder.getInstance();
|
ImapIdleFolderHolder holder = ImapIdleFolderHolder.getInstance();
|
||||||
holder.registerMailboxForIdle(mContext, account, mMailbox);
|
holder.registerMailboxForIdle(mContext, account, mMailbox);
|
||||||
|
|
||||||
|
// Request a quick sync to make sure we didn't lose any new mails
|
||||||
|
// during the failure time
|
||||||
|
ImapService.requestSync(mContext, account, mMailbox.mId, false);
|
||||||
} catch (MessagingException ex) {
|
} catch (MessagingException ex) {
|
||||||
LogUtils.w(LOG_TAG, ex, "Failed to register mailbox for idle. Reschedule.");
|
LogUtils.w(LOG_TAG, ex, "Failed to register mailbox for idle. Reschedule.");
|
||||||
reschedulePing(increasePingDelay());
|
reschedulePing(increasePingDelay());
|
||||||
|
@ -906,24 +910,12 @@ public class ImapService extends Service {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Store remoteStore = null;
|
|
||||||
try {
|
try {
|
||||||
// Since we were idling, just perform a full sync of the mailbox to ensure
|
|
||||||
// we have all the items before kick the connection
|
|
||||||
remoteStore = Store.getInstance(account, context);
|
|
||||||
synchronizeMailboxGeneric(context, account, remoteStore,
|
|
||||||
mailbox, false, true);
|
|
||||||
|
|
||||||
// Kick mailbox
|
|
||||||
ImapIdleFolderHolder holder = ImapIdleFolderHolder.getInstance();
|
ImapIdleFolderHolder holder = ImapIdleFolderHolder.getInstance();
|
||||||
holder.kickIdledMailbox(context, mailbox, account);
|
holder.kickIdledMailbox(context, mailbox, account);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtils.e(Logging.LOG_TAG,"Failed to kick idled connection "
|
LogUtils.e(Logging.LOG_TAG,"Failed to kick idled connection "
|
||||||
+ "for mailbox " + mailboxId, e);
|
+ "for mailbox " + mailboxId, e);
|
||||||
} finally {
|
|
||||||
if (remoteStore != null) {
|
|
||||||
remoteStore.closeConnections();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue