From 4387237a6fd359b80c73433276d9e2a88566a882 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 25 Mar 2020 10:44:50 +0100 Subject: [PATCH] Let watchdog reschedule missed alarms --- .../eu/faircode/email/ServiceSynchronize.java | 15 +++++++++++++++ .../java/eu/faircode/email/WorkerWatchdog.java | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 319ace36b5..5f5ee8fa1c 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -662,6 +662,10 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences onAlarm(intent); break; + case "watchdog": + onWatchdog(intent); + break; + default: Log.w("Unknown action: " + action); } @@ -713,6 +717,11 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences liveAccountNetworkState.post(command); } + private void onWatchdog(Intent intent) { + schedule(this); + onEval(intent); + } + private NotificationCompat.Builder getNotificationService(Integer accounts, Integer operations) { if (accounts != null) this.lastAccounts = accounts; @@ -1910,4 +1919,10 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences new Intent(context, ServiceSynchronize.class) .setAction("alarm")); } + + static void watchdog(Context context) { + ContextCompat.startForegroundService(context, + new Intent(context, ServiceSynchronize.class) + .setAction("watchdog")); + } } diff --git a/app/src/main/java/eu/faircode/email/WorkerWatchdog.java b/app/src/main/java/eu/faircode/email/WorkerWatchdog.java index fa03bc0333..8f7a68c170 100644 --- a/app/src/main/java/eu/faircode/email/WorkerWatchdog.java +++ b/app/src/main/java/eu/faircode/email/WorkerWatchdog.java @@ -44,7 +44,7 @@ public class WorkerWatchdog extends Worker { @Override public Result doWork() { Log.i("Running " + getName()); - ServiceSynchronize.eval(getApplicationContext(), "watchdog"); + ServiceSynchronize.watchdog(getApplicationContext()); ServiceSend.watchdog(getApplicationContext()); return Result.success(); }