diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index d6c0df2360..fef3baf75f 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -3559,7 +3559,7 @@ class Core { } finally { // Free memory isub[j] = null; - dc.stop(); + dc.stop(state.getForeground()); } } } @@ -3647,7 +3647,7 @@ class Core { } finally { // Free memory isub[j] = null; - dc.stop(); + dc.stop(state.getForeground()); } } } @@ -5625,6 +5625,7 @@ class Core { private Thread thread = new Thread(); private Semaphore semaphore = new Semaphore(0); private boolean running = true; + private boolean foreground = false; private boolean recoverable = true; private Throwable unrecoverable = null; private Long lastActivity = null; @@ -5809,6 +5810,14 @@ class Core { return serial; } + void setForeground(boolean value) { + this.foreground = value; + } + + boolean getForeground() { + return this.foreground; + } + @NonNull @Override public String toString() { diff --git a/app/src/main/java/eu/faircode/email/DutyCycle.java b/app/src/main/java/eu/faircode/email/DutyCycle.java index 9b0f9f6543..2c7cd897a3 100644 --- a/app/src/main/java/eu/faircode/email/DutyCycle.java +++ b/app/src/main/java/eu/faircode/email/DutyCycle.java @@ -48,7 +48,7 @@ public class DutyCycle { start = new Date().getTime(); } - public void stop() { + public void stop(boolean foreground) { long end = new Date().getTime(); if (last != null) @@ -59,8 +59,9 @@ public class DutyCycle { if (busy + idle > interval) { long wait = (duration - idle); - Log.i(name + " busy=" + busy + " idle=" + idle + " wait=" + wait); - if (wait > 0) { + Log.i(name + " busy=" + busy + " idle=" + idle + + " wait=" + wait + " foreground=" + foreground); + if (wait > 0 && foreground) { try { Thread.sleep(wait); } catch (InterruptedException ex) { diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index a60a0d4219..9018404329 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1193,6 +1193,8 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences private void onState(Intent intent) { foreground = intent.getBooleanExtra("foreground", false); + for (Core.State state : coreStates.values()) + state.setForeground(foreground); } private void onPoll(Intent intent) { @@ -1992,7 +1994,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences iservice, ifolder, state, serial); } finally { - dc.stop(); + dc.stop(state.getForeground()); } } catch (Throwable ex) {