mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 12:02:16 +02:00
NF: Allow to execute task and listener without manager
I realized for a test that it may be easier to get to execute a task against a listener without involving the whole manager process. This ensure this feature will be available to any tester when needed even if I don't use it know
This commit is contained in:
parent
8e52b22a19
commit
fabf28a937
@ -36,12 +36,18 @@ public class ForegroundTaskManager extends TaskManager {
|
||||
public <ProgressListener, ProgressBackground extends ProgressListener, ResultListener, ResultBackground extends ResultListener> CollectionTask<ProgressListener, ProgressBackground, ResultListener, ResultBackground> launchCollectionTaskConcrete(
|
||||
@NonNull CollectionTask.Task<ProgressBackground, ResultBackground> task,
|
||||
@Nullable TaskListener<ProgressListener, ResultListener> listener) {
|
||||
return executeTaskWithListener(task, listener, mColGetter);
|
||||
}
|
||||
|
||||
public static <ProgressListener, ProgressBackground extends ProgressListener, ResultListener, ResultBackground extends ResultListener> CollectionTask<ProgressListener, ProgressBackground, ResultListener, ResultBackground> executeTaskWithListener(
|
||||
@NonNull CollectionTask.Task<ProgressBackground, ResultBackground> task,
|
||||
@Nullable TaskListener<ProgressListener, ResultListener> listener, CollectionGetter colGetter) {
|
||||
if (listener != null) {
|
||||
listener.onPreExecute();
|
||||
}
|
||||
final ResultBackground res;
|
||||
try {
|
||||
res = task.task(mColGetter.getCol(), new MockTaskManager<>(listener));
|
||||
res = task.task(colGetter.getCol(), new MockTaskManager<>(listener));
|
||||
} catch (Exception e) {
|
||||
Timber.w(e, "A new failure may have something to do with running in the foreground.");
|
||||
throw e;
|
||||
@ -79,7 +85,7 @@ public class ForegroundTaskManager extends TaskManager {
|
||||
return true;
|
||||
}
|
||||
|
||||
public class MockTaskManager<ProgressListener, ProgressBackground extends ProgressListener> implements ProgressSenderAndCancelListener<ProgressBackground> {
|
||||
public static class MockTaskManager<ProgressListener, ProgressBackground extends ProgressListener> implements ProgressSenderAndCancelListener<ProgressBackground> {
|
||||
|
||||
private final @Nullable TaskListener<ProgressListener, ?> mTaskListener;
|
||||
|
||||
@ -101,7 +107,7 @@ public class ForegroundTaskManager extends TaskManager {
|
||||
}
|
||||
}
|
||||
|
||||
public class EmptyTask<ProgressListener, ProgressBackground extends ProgressListener, ResultListener, ResultBackground extends ResultListener> extends
|
||||
public static class EmptyTask<ProgressListener, ProgressBackground extends ProgressListener, ResultListener, ResultBackground extends ResultListener> extends
|
||||
CollectionTask<ProgressListener, ProgressBackground, ResultListener, ResultBackground> {
|
||||
|
||||
protected EmptyTask(Task<ProgressBackground, ResultBackground> task, TaskListener<ProgressListener, ResultListener> listener) {
|
||||
|
Loading…
Reference in New Issue
Block a user