From f0b88c8d2c38c352ae44992d78c802f69ac651ba Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 3 Mar 2020 09:54:33 +0100 Subject: [PATCH] Check if account thread is alive --- app/src/main/java/eu/faircode/email/Core.java | 4 ++++ .../main/java/eu/faircode/email/ServiceSynchronize.java | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 8dcab4ce25..8fd817b776 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -3503,6 +3503,10 @@ class Core { join(thread); } + boolean isAlive() { + return thread.isAlive(); + } + boolean isRunning() { return running; } diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index ba3a4f9e78..75e15cd805 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -236,15 +236,16 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences // Some networks disallow email server connections: // - reload on network type change when disconnected + boolean isRunning = (state != null && state.isAlive()); if (reload || - prev.canRun() != current.canRun() || + isRunning != current.canRun() || !prev.accountState.equals(current.accountState) || (!"connected".equals(current.accountState.state) && !Objects.equals(prev.networkState.getType(), current.networkState.getType()))) { - if (prev.canRun() || current.canRun()) + if (isRunning || current.canRun()) EntityLog.log(ServiceSynchronize.this, "### changed " + current + " reload=" + reload + - " stop=" + prev.canRun() + + " stop=" + isRunning + " start=" + current.canRun() + " sync=" + current.accountState.isEnabled(current.enabled) + "/" + sync + " changed=" + !prev.accountState.equals(current.accountState) + @@ -255,7 +256,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences " tbd=" + current.accountState.tbd + " state=" + current.accountState.state + " type=" + prev.networkState.getType() + "/" + current.networkState.getType()); - if (prev.canRun()) + if (isRunning) stop(prev); if (current.canRun()) start(current, current.accountState.isEnabled(current.enabled) || sync);