diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 1a9ecf9ec8..3902377456 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -6138,7 +6138,7 @@ public class FragmentMessages extends FragmentBase protected void onException(Bundle args, Throwable ex) { Log.unexpectedError(getParentFragmentManager(), ex); } - }.setExecutor(executor).execute(this, args, "quickactions"); + }.setExecutor(executor).setId("messages:" + FragmentMessages.this.hashCode()).execute(this, args, "quickactions"); } else { fabMore.hide(); tvSelectedCount.setVisibility(View.GONE); diff --git a/app/src/main/java/eu/faircode/email/SimpleTask.java b/app/src/main/java/eu/faircode/email/SimpleTask.java index a61726581a..36109439dc 100644 --- a/app/src/main/java/eu/faircode/email/SimpleTask.java +++ b/app/src/main/java/eu/faircode/email/SimpleTask.java @@ -54,6 +54,7 @@ public abstract class SimpleTask implements LifecycleObserver { private boolean count = true; private boolean keepawake = false; + private String id; private String name; private long started; private boolean destroyed; @@ -74,6 +75,11 @@ public abstract class SimpleTask implements LifecycleObserver { static final String ACTION_TASK_COUNT = BuildConfig.APPLICATION_ID + ".ACTION_TASK_COUNT"; + public SimpleTask setId(String id) { + this.id = id; + return this; + } + public SimpleTask setLog(boolean log) { this.log = log; if (!log) @@ -143,6 +149,10 @@ public abstract class SimpleTask implements LifecycleObserver { // prevent garbage collection synchronized (tasks) { + if (id != null) + for (SimpleTask task : tasks) + if (id.equals(task.id)) + task.cancel(context); tasks.add(this); }