diff --git a/app/src/main/java/eu/faircode/email/SimpleTask.java b/app/src/main/java/eu/faircode/email/SimpleTask.java index 304933dff4..dd856138a1 100644 --- a/app/src/main/java/eu/faircode/email/SimpleTask.java +++ b/app/src/main/java/eu/faircode/email/SimpleTask.java @@ -144,15 +144,6 @@ public abstract class SimpleTask implements LifecycleObserver { } } - LifecycleObserver watcher = new LifecycleObserver() { - @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) - public void onDestroy() { - EntityLog.log(context, EntityLog.Type.Debug, "Cancelling task=" + name); - cancel(context); - owner.getLifecycle().removeObserver(this); - } - }; - future = getExecutor(context).submit(new Runnable() { private Object data; private long elapsed; @@ -190,34 +181,30 @@ public abstract class SimpleTask implements LifecycleObserver { if (state.equals(Lifecycle.State.DESTROYED)) { // No delivery cleanup(context); + } else if (state.isAtLeast(Lifecycle.State.RESUMED)) { + // Inline delivery + Log.i("Deliver task " + name + " state=" + state + " elapse=" + elapsed + " ms"); + deliver(); + cleanup(context); } else { - owner.getLifecycle().removeObserver(watcher); - - if (state.isAtLeast(Lifecycle.State.RESUMED)) { - // Inline delivery - Log.i("Deliver task " + name + " state=" + state + " elapse=" + elapsed + " ms"); - deliver(); - cleanup(context); - } else { - Log.i("Deferring task " + name + " state=" + state); - owner.getLifecycle().addObserver(new LifecycleObserver() { - @OnLifecycleEvent(Lifecycle.Event.ON_ANY) - public void onAny() { - state = owner.getLifecycle().getCurrentState(); - if (state.equals(Lifecycle.State.DESTROYED)) { - Log.i("Destroyed task " + name); - owner.getLifecycle().removeObserver(this); - cleanup(context); - } else if (state.isAtLeast(Lifecycle.State.RESUMED)) { - Log.i("Deferred delivery task " + name); - owner.getLifecycle().removeObserver(this); - deliver(); - cleanup(context); - } else - Log.i("Deferring task " + name + " state=" + state); - } - }); - } + Log.i("Deferring task " + name + " state=" + state); + owner.getLifecycle().addObserver(new LifecycleObserver() { + @OnLifecycleEvent(Lifecycle.Event.ON_ANY) + public void onAny() { + state = owner.getLifecycle().getCurrentState(); + if (state.equals(Lifecycle.State.DESTROYED)) { + Log.i("Destroyed task " + name); + owner.getLifecycle().removeObserver(this); + cleanup(context); + } else if (state.isAtLeast(Lifecycle.State.RESUMED)) { + Log.i("Deferred delivery task " + name); + owner.getLifecycle().removeObserver(this); + deliver(); + cleanup(context); + } else + Log.i("Deferring task " + name + " state=" + state); + } + }); } } @@ -262,8 +249,6 @@ public abstract class SimpleTask implements LifecycleObserver { } }); - owner.getLifecycle().addObserver(watcher); - updateTaskCount(context); }