From 776d4bba003b644a3985d2f3b360e612d19a0ffe Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 24 Aug 2018 05:24:05 +0000 Subject: [PATCH] IDLE when supported only --- .../eu/faircode/email/ServiceSynchronize.java | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index e7725cb781..12429f25c4 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -589,32 +589,34 @@ public class ServiceSynchronize extends LifecycleService { noops.add(noop); // Receive folder events - Thread idle = new Thread(new Runnable() { - @Override - public void run() { - try { - Log.i(Helper.TAG, folder.name + " start idle"); - while (state.running && ifolder.isOpen()) { - Log.i(Helper.TAG, folder.name + " do idle"); - ifolder.idle(false); - Log.i(Helper.TAG, folder.name + " done idle"); - } - } catch (Throwable ex) { - Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); - reportError(account.name, folder.name, ex); + if (istore.hasCapability("IDLE")) { + Thread idle = new Thread(new Runnable() { + @Override + public void run() { + try { + Log.i(Helper.TAG, folder.name + " start idle"); + while (state.running && ifolder.isOpen()) { + Log.i(Helper.TAG, folder.name + " do idle"); + ifolder.idle(false); + Log.i(Helper.TAG, folder.name + " done idle"); + } + } catch (Throwable ex) { + Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); + reportError(account.name, folder.name, ex); - db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); + db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); - synchronized (state) { - state.notifyAll(); + synchronized (state) { + state.notifyAll(); + } + } finally { + Log.i(Helper.TAG, folder.name + " end idle"); } - } finally { - Log.i(Helper.TAG, folder.name + " end idle"); } - } - }, "sync.idle." + folder.id); - idle.start(); - idlers.add(idle); + }, "sync.idle." + folder.id); + idle.start(); + idlers.add(idle); + } } BroadcastReceiver processReceiver = new BroadcastReceiver() {