diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 917cb50dab..ac2abfbd0b 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -2477,7 +2477,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences if (poll && enabled && pollInterval > 0) { long now = new Date().getTime(); long interval = pollInterval * 60 * 1000L; - long next = now + interval - now % interval + 30 * 1000L; + long next = now - now % interval + interval + 30 * 1000L; if (next < now + interval / 5) next += interval; @@ -2593,9 +2593,11 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences boolean enabled = prefs.getBoolean("enabled", true); if (watchdog && enabled) { long now = new Date().getTime(); - long trigger = (now / WATCHDOG_INTERVAL) * WATCHDOG_INTERVAL + WATCHDOG_INTERVAL; - Log.i("Sync watchdog at " + new Date(trigger)); - AlarmManagerCompat.setAndAllowWhileIdle(am, AlarmManager.RTC_WAKEUP, trigger, pi); // exact + long next = now - now % WATCHDOG_INTERVAL + WATCHDOG_INTERVAL; + if (next < now + WATCHDOG_INTERVAL / 5) + next += WATCHDOG_INTERVAL; + Log.i("Sync watchdog at " + new Date(next)); + AlarmManagerCompat.setAndAllowWhileIdle(am, AlarmManager.RTC_WAKEUP, next, pi); // exact } else am.cancel(pi); }