From f902b584f4b896248894e17aab4030eb8f9a028b Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 15 Jul 2021 21:01:50 +0200 Subject: [PATCH] Restart services on exact alarm changes --- .../eu/faircode/email/ReceiverAutoStart.java | 16 ++++++++-------- .../main/java/eu/faircode/email/ServiceSend.java | 4 ++++ .../eu/faircode/email/ServiceSynchronize.java | 6 +++++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ReceiverAutoStart.java b/app/src/main/java/eu/faircode/email/ReceiverAutoStart.java index 69b4a262a5..5d9a70badf 100644 --- a/app/src/main/java/eu/faircode/email/ReceiverAutoStart.java +++ b/app/src/main/java/eu/faircode/email/ReceiverAutoStart.java @@ -19,19 +19,18 @@ package eu.faircode.email; Copyright 2018-2021 by Marcel Bokhorst (M66B) */ +import android.app.AlarmManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class ReceiverAutoStart extends BroadcastReceiver { // https://developer.android.com/reference/android/app/AlarmManager#ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED - private final String ACTION_EXACT = - "android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED"; @Override public void onReceive(final Context context, Intent intent) { String action = intent.getAction(); - if (ACTION_EXACT.equals(action) || + if (AlarmManager.ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED.equals(action) || Intent.ACTION_BOOT_COMPLETED.equals(action) || Intent.ACTION_MY_PACKAGE_REPLACED.equals(action)) { EntityLog.log(context, "Received " + intent); @@ -39,12 +38,13 @@ public class ReceiverAutoStart extends BroadcastReceiver { if (Intent.ACTION_MY_PACKAGE_REPLACED.equals(action)) ApplicationEx.upgrade(context); - if (ACTION_EXACT.equals(action)) - ServiceSynchronize.reload(context, null, false, action); - else { - ServiceSynchronize.boot(context); - ServiceSend.boot(context); + if (AlarmManager.ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED.equals(action)) { + ServiceSynchronize.stop(context); + ServiceSend.stop(context); } + + ServiceSynchronize.boot(context); + ServiceSend.boot(context); } } } diff --git a/app/src/main/java/eu/faircode/email/ServiceSend.java b/app/src/main/java/eu/faircode/email/ServiceSend.java index ea9c018abc..9e75d91192 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSend.java +++ b/app/src/main/java/eu/faircode/email/ServiceSend.java @@ -800,6 +800,10 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar } } + static void stop(Context context) { + context.stopService(new Intent(context, ServiceSend.class)); + } + static void schedule(Context context, long delay) { Intent intent = new Intent(context, ServiceSend.class); PendingIntent pi = PendingIntentCompat.getForegroundService( diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index b79d513141..b366aba5ff 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -2710,8 +2710,12 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences .setAction("watchdog")); } - static void restart(Context context) { + static void stop(Context context) { context.stopService(new Intent(context, ServiceSynchronize.class)); + } + + static void restart(Context context) { + stop(context); eval(context, "restart"); }