From 3327cde920be38adcb81b077f94cea16cb1bb138 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 5 Feb 2025 18:14:58 +0100 Subject: [PATCH] Kill media tasks --- .../main/java/eu/faircode/email/AdapterMedia.java | 2 +- .../main/java/eu/faircode/email/SimpleTask.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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