Refine thread handling.
Remove mailboxes from the list synchronously and just do the network I/O and thread joins in the background. Change-Id: I2a339e5982c103b69f1212627f1cc98e98a8a068
This commit is contained in:
parent
c96099279b
commit
a0ef884d04
|
@ -510,14 +510,10 @@ public class ImapService extends Service {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stopIdlingForFolders(foldersToStop);
|
stopIdlingForFoldersInBackground(foldersToStop);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void unregisterAllIdledMailboxes(final boolean disconnect) {
|
private void unregisterAllIdledMailboxes(final boolean disconnect) {
|
||||||
// Run away from the UI thread
|
|
||||||
sExecutor.execute(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final ArrayList<ImapFolder> foldersToStop = new ArrayList<>();
|
final ArrayList<ImapFolder> foldersToStop = new ArrayList<>();
|
||||||
synchronized (mIdledFolders) {
|
synchronized (mIdledFolders) {
|
||||||
LogUtils.i(LOG_TAG, "Unregister all idle mailboxes");
|
LogUtils.i(LOG_TAG, "Unregister all idle mailboxes");
|
||||||
|
@ -533,12 +529,16 @@ public class ImapService extends Service {
|
||||||
}
|
}
|
||||||
mIdledFolders.clear();
|
mIdledFolders.clear();
|
||||||
}
|
}
|
||||||
stopIdlingForFolders(foldersToStop);
|
stopIdlingForFoldersInBackground(foldersToStop);
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void stopIdlingForFolders(final List<ImapFolder> folders) {
|
private void stopIdlingForFoldersInBackground(final List<ImapFolder> folders) {
|
||||||
|
if (folders.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sExecutor.execute(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
for (ImapFolder folder : folders) {
|
for (ImapFolder folder : folders) {
|
||||||
try {
|
try {
|
||||||
folder.stopIdling(true);
|
folder.stopIdling(true);
|
||||||
|
@ -547,6 +547,8 @@ public class ImapService extends Service {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ImapEmailConnectivityManager extends EmailConnectivityManager {
|
private static class ImapEmailConnectivityManager extends EmailConnectivityManager {
|
||||||
|
|
Loading…
Reference in New Issue