diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java index 00f6384970..cc34f2ef35 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java @@ -136,7 +136,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { prefs.edit().putBoolean("enabled", checked).apply(); - ServiceSynchronize.eval(getContext(), "enabled=" + checked); + ServiceSynchronize.reschedule(getContext()); } }); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index af1732bfaa..7edcc7296d 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1804,25 +1804,25 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); am.cancel(pi); - boolean enabled; + boolean poll; long[] schedule = getSchedule(context); if (schedule == null) - enabled = false; + poll = true; else { long now = new Date().getTime(); long next = (now < schedule[0] ? schedule[0] : schedule[1]); - enabled = (now >= schedule[0] && now < schedule[1]); + poll = (now >= schedule[0] && now < schedule[1]); Log.i("Schedule now=" + new Date(now)); Log.i("Schedule start=" + new Date(schedule[0])); Log.i("Schedule end=" + new Date(schedule[1])); Log.i("Schedule next=" + new Date(next)); - Log.i("Schedule enabled=" + enabled); + Log.i("Schedule poll=" + poll); AlarmManagerCompat.setAndAllowWhileIdle(am, AlarmManager.RTC_WAKEUP, next, pi); } - ServiceUI.schedule(context, enabled); + ServiceUI.schedule(context, poll); } static long[] getSchedule(Context context) { diff --git a/app/src/main/java/eu/faircode/email/ServiceUI.java b/app/src/main/java/eu/faircode/email/ServiceUI.java index 5c163fb8a7..17aa7ba88a 100644 --- a/app/src/main/java/eu/faircode/email/ServiceUI.java +++ b/app/src/main/java/eu/faircode/email/ServiceUI.java @@ -468,8 +468,8 @@ public class ServiceUI extends IntentService { if (reschedule) { long now = new Date().getTime(); long[] schedule = ServiceSynchronize.getSchedule(this); - boolean enabled = (schedule != null && now >= schedule[0] && now < schedule[1]); - schedule(this, enabled); + boolean poll = (schedule == null || (now >= schedule[0] && now < schedule[1])); + schedule(this, poll); } } @@ -483,7 +483,7 @@ public class ServiceUI extends IntentService { .setAction(account == null ? "sync" : "sync:" + account)); } - static void schedule(Context context, boolean enabled) { + static void schedule(Context context, boolean poll) { Intent intent = new Intent(context, ServiceUI.class); intent.setAction("sync"); intent.putExtra("reschedule", true); @@ -494,8 +494,9 @@ public class ServiceUI extends IntentService { am.cancel(piSync); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean enabled = prefs.getBoolean("enabled", true); int pollInterval = prefs.getInt("poll_interval", ServiceSynchronize.DEFAULT_POLL_INTERVAL); - if (enabled && pollInterval > 0) { + if (poll && enabled && pollInterval > 0) { long now = new Date().getTime(); long interval = pollInterval * 60 * 1000L; long next = now + interval - now % interval;