From 8de3da3fb633c86ce4059d12bfd92fb26022fab7 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 17 Apr 2022 22:32:27 +0200 Subject: [PATCH] Cancel pending purge --- .../java/eu/faircode/email/ServiceSynchronize.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 6ccffddaa2..2946d3e1e3 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -46,9 +46,12 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.core.app.NotificationCompat; import androidx.core.content.ContextCompat; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.MediatorLiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.Observer; +import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.PreferenceManager; import com.sun.mail.iap.Argument; @@ -1865,6 +1868,16 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences cowner.value = new TwoStateOwner(ServiceSynchronize.this, account.name); cowner.value.start(); + Lifecycle registry = cowner.value.getLifecycle(); + registry.addObserver(new LifecycleObserver() { + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + public void onDestroyed() { + Log.i("Canceling pending purge"); + getMainHandler().removeCallbacks(purge); + registry.removeObserver(this); + } + }); + db.operation().liveOperations(account.id).observe(cowner.value, new Observer>() { private DutyCycle dc = new DutyCycle(account.name + " operations"); private List handling = new ArrayList<>();