Merge branch 'master' of github.com:M66B/FairEmail

This commit is contained in:
M66B
2021-06-21 08:24:48 +02:00
51 changed files with 258192 additions and 75 deletions

View File

@@ -51,6 +51,7 @@ import java.util.concurrent.Future;
public abstract class SimpleTask<T> implements LifecycleObserver {
private boolean log = true;
private boolean count = true;
private boolean interruptable = true;
private String name;
private long started;
@@ -82,6 +83,11 @@ public abstract class SimpleTask<T> implements LifecycleObserver {
return this;
}
public SimpleTask<T> setInterruptable(boolean interruptable) {
this.interruptable = interruptable;
return this;
}
public SimpleTask<T> setExecutor(ExecutorService executor) {
this.localExecutor = executor;
return this;
@@ -139,8 +145,6 @@ public abstract class SimpleTask<T> implements LifecycleObserver {
tasks.add(this);
}
updateTaskCount(context);
try {
onPreExecute(args);
} catch (Throwable ex) {
@@ -253,6 +257,8 @@ public abstract class SimpleTask<T> implements LifecycleObserver {
});
}
});
updateTaskCount(context);
}
void cancel(Context context) {
@@ -280,12 +286,12 @@ public abstract class SimpleTask<T> implements LifecycleObserver {
long now = new Date().getTime();
synchronized (tasks) {
for (SimpleTask task : tasks)
if (!BuildConfig.PLAY_STORE_RELEASE ||
(task.future != null && !task.future.isDone())) {
if (task.future != null && !task.future.isDone()) {
long elapsed = now - task.started;
if (elapsed > CANCEL_AFTER && !task.interrupted) {
task.interrupted = true;
if (task.future != null && !task.future.isDone()) {
if (task.interruptable &&
task.future != null && !task.future.isDone()) {
Log.e("Interrupting task " + task +
" tasks=" + getCountLocked() + "/" + tasks.size());
task.future.cancel(true);