diff --git a/app/src/main/java/eu/faircode/email/AdapterMedia.java b/app/src/main/java/eu/faircode/email/AdapterMedia.java index 09dcbe5306..c11315f152 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMedia.java +++ b/app/src/main/java/eu/faircode/email/AdapterMedia.java @@ -357,7 +357,7 @@ public class AdapterMedia extends RecyclerView.Adapter tvCaption.setVisibility(View.VISIBLE); ivImage.setImageResource(R.drawable.twotone_warning_24); } - }.execute(context, owner, args, "media:load"); + }.setKill(true).execute(context, owner, args, "media:load"); } else ivImage.setImageResource(attachment.progress == null ? R.drawable.twotone_image_24 : R.drawable.twotone_hourglass_top_24); diff --git a/app/src/main/java/eu/faircode/email/SimpleTask.java b/app/src/main/java/eu/faircode/email/SimpleTask.java index a023e12c2d..b4f3fc1cd1 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 log = true; private boolean count = true; private boolean keepawake = false; + private boolean kill = false; private String id; private String name; @@ -104,6 +105,12 @@ public abstract class SimpleTask implements LifecycleObserver { return this; } + @NonNull + public SimpleTask setKill(boolean kill) { + this.kill = kill; + return this; + } + @NonNull public SimpleTask setExecutor(ExecutorService executor) { this.localExecutor = executor; @@ -447,6 +454,13 @@ public abstract class SimpleTask implements LifecycleObserver { } protected void onDestroyed(Bundle args) { + if (this.kill && future != null) + try { + Log.i("Killing task=" + name); + future.cancel(true); + } catch (Throwable ex) { + Log.w(ex); + } } @Override