diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 77754a872e..f4e4cfafaa 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -1389,7 +1389,7 @@ public class FragmentFolders extends FragmentBase { protected void onException(Bundle args, Throwable ex) { Log.unexpectedError(getParentFragmentManager(), ex); } - }.execute(this, args, "folder:export"); + }.setKeepAwake(true).execute(this, args, "folder:export"); } private void onEditAccountName(Bundle args) { diff --git a/app/src/main/java/eu/faircode/email/SimpleTask.java b/app/src/main/java/eu/faircode/email/SimpleTask.java index 6b325cfae0..4c88c45bc1 100644 --- a/app/src/main/java/eu/faircode/email/SimpleTask.java +++ b/app/src/main/java/eu/faircode/email/SimpleTask.java @@ -52,6 +52,7 @@ import java.util.concurrent.Future; public abstract class SimpleTask implements LifecycleObserver { private boolean log = true; private boolean count = true; + private boolean keepawake = false; private String name; private long started; @@ -85,6 +86,11 @@ public abstract class SimpleTask implements LifecycleObserver { return this; } + public SimpleTask setKeepAwake(boolean value) { + this.keepawake = value; + return this; + } + public SimpleTask setExecutor(ExecutorService executor) { this.localExecutor = executor; return this; @@ -183,7 +189,10 @@ public abstract class SimpleTask implements LifecycleObserver { public void run() { // Run in background thread try { - wl.acquire(MAX_WAKELOCK); + if (keepawake) + wl.acquire(); + else + wl.acquire(MAX_WAKELOCK); if (log) Log.i("Executing task=" + name);