From ae0c2478cfa2fc2ae0e542c6cc5916ebd479326a Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 29 Jul 2020 08:30:51 +0200 Subject: [PATCH] Restored send delay --- .../java/eu/faircode/email/ServiceSend.java | 68 +++++++++++-------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSend.java b/app/src/main/java/eu/faircode/email/ServiceSend.java index fad0245feb..40a53d6ad5 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSend.java +++ b/app/src/main/java/eu/faircode/email/ServiceSend.java @@ -79,6 +79,7 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar private static final int PI_SEND = 1; private static final int RETRY_MAX = 3; + private static final int CONNECTIVITY_DELAY = 5000; // milliseconds @Override public void onCreate() { @@ -289,39 +290,46 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar } private void _checkConnectivity() { - Network active = ConnectionHelper.getActiveNetwork(this); - boolean restart = !Objects.equals(lastActive, active); - if (restart) { - lastActive = active; - EntityLog.log(this, "Service send active=" + active); - - if (lastSuitable) { - EntityLog.log(this, "Service send restart"); - lastSuitable = false; - owner.stop(); - handling.clear(); - } - } + final Network active = ConnectionHelper.getActiveNetwork(this); + final boolean restart = !Objects.equals(lastActive, active); + final boolean suitable = ConnectionHelper.getNetworkState(this).isSuitable(); - boolean suitable = ConnectionHelper.getNetworkState(this).isSuitable(); - if (lastSuitable != suitable) { - lastSuitable = suitable; - EntityLog.log(this, "Service send suitable=" + suitable); + if (restart || lastSuitable != suitable) + new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { + @Override + public void run() { + if (restart) { + lastActive = active; + EntityLog.log(ServiceSend.this, "Service send active=" + active); + + if (lastSuitable) { + EntityLog.log(ServiceSend.this, "Service send restart"); + lastSuitable = false; + owner.stop(); + handling.clear(); + } + } - try { - NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - nm.notify(Helper.NOTIFICATION_SEND, getNotificationService().build()); - } catch (Throwable ex) { - Log.w(ex); - } + if (lastSuitable != suitable) { + lastSuitable = suitable; + EntityLog.log(ServiceSend.this, "Service send suitable=" + suitable); - if (suitable) - owner.start(); - else { - owner.stop(); - handling.clear(); - } - } + try { + NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + nm.notify(Helper.NOTIFICATION_SEND, getNotificationService().build()); + } catch (Throwable ex) { + Log.w(ex); + } + + if (suitable) + owner.start(); + else { + owner.stop(); + handling.clear(); + } + } + } + }, CONNECTIVITY_DELAY); } private void processOperations(List ops) {