From d98f674832bf6462575be8c32925ad9d387fcd60 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 29 Oct 2022 13:16:28 +0200 Subject: [PATCH] Prevent ANR --- .../java/eu/faircode/email/ActivitySetup.java | 2 +- .../java/eu/faircode/email/SimpleTask.java | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java index b1a87ea37e..9915337673 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySetup.java +++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java @@ -1502,7 +1502,7 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac onProgress(ssb, null); } } - }.execute(this, args, "setup:import"); + }.setHandler(tvLog.getHandler()).execute(this, args, "setup:import"); } private void handleK9Import(Uri uri) { diff --git a/app/src/main/java/eu/faircode/email/SimpleTask.java b/app/src/main/java/eu/faircode/email/SimpleTask.java index 9504b22d91..360a6f3966 100644 --- a/app/src/main/java/eu/faircode/email/SimpleTask.java +++ b/app/src/main/java/eu/faircode/email/SimpleTask.java @@ -23,6 +23,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.os.Handler; import android.os.PowerManager; import android.view.ContextThemeWrapper; @@ -62,6 +63,7 @@ public abstract class SimpleTask implements LifecycleObserver { private Lifecycle.State state; private Future future; private ExecutorService localExecutor; + private Handler handler = null; private static PowerManager.WakeLock wl = null; private static ExecutorService globalExecutor = null; @@ -74,11 +76,13 @@ public abstract class SimpleTask implements LifecycleObserver { static final String ACTION_TASK_COUNT = BuildConfig.APPLICATION_ID + ".ACTION_TASK_COUNT"; + @NonNull public SimpleTask setId(String id) { this.id = id; return this; } + @NonNull public SimpleTask setLog(boolean log) { this.log = log; if (!log) @@ -86,21 +90,31 @@ public abstract class SimpleTask implements LifecycleObserver { return this; } + @NonNull public SimpleTask setCount(boolean count) { this.count = count; return this; } + @NonNull public SimpleTask setKeepAwake(boolean value) { this.keepawake = value; return this; } + @NonNull public SimpleTask setExecutor(ExecutorService executor) { this.localExecutor = executor; return this; } + @NonNull + public SimpleTask setHandler(Handler handler) { + this.handler = handler; + return this; + } + + @NonNull private ExecutorService getExecutor(Context context) { if (wl == null) { PowerManager pm = Helper.getSystemService(context, PowerManager.class); @@ -118,6 +132,11 @@ public abstract class SimpleTask implements LifecycleObserver { return globalExecutor; } + @NonNull + private Handler getHandler() { + return (handler == null ? ApplicationEx.getMainHandler() : handler); + } + public void execute(Context context, LifecycleOwner owner, @NonNull Bundle args, @NonNull String name) { run(context, owner, args, name); } @@ -385,7 +404,7 @@ public abstract class SimpleTask implements LifecycleObserver { } protected void postProgress(CharSequence status, Bundle data) { - ApplicationEx.getMainHandler().post(new Runnable() { + getHandler().post(new Runnable() { @Override public void run() { try {