From e05cc5c7ae2427bdfaade8e1f02df558da6e031f Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 7 Mar 2024 11:45:10 +0100 Subject: [PATCH] Delay destroying send service --- app/src/main/java/eu/faircode/email/ServiceSend.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSend.java b/app/src/main/java/eu/faircode/email/ServiceSend.java index 92e5194f3c..f87f0d9046 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSend.java +++ b/app/src/main/java/eu/faircode/email/ServiceSend.java @@ -95,6 +95,7 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar private static final long RETRY_WAIT = 5000L; // milliseconds private static final int CONNECTIVITY_DELAY = 5000; // milliseconds private static final int PROGRESS_UPDATE_INTERVAL = 1000; // milliseconds + private static final long STOP_DELAY = 2500L; static final int PI_SEND = 1; static final int PI_FIX = 2; @@ -110,6 +111,13 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar PowerManager pm = Helper.getSystemService(this, PowerManager.class); wlOutbox = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, BuildConfig.APPLICATION_ID + ":send"); + final Runnable quit = new RunnableEx("send:quit") { + @Override + protected void delegate() { + stopSelf(); + } + }; + // Observe unsent count DB db = DB.getInstance(this); db.operation().liveUnsent().observe(this, new Observer() { @@ -128,8 +136,9 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar Log.w(ex); } + getMainHandler().removeCallbacks(quit); if (unsent == null || unsent.count == 0) - stopSelf(); + getMainHandler().postDelayed(quit, STOP_DELAY); } } });