gradle
dependencies {
implementation 'com.google.android.gms:play-services-tasks:17.2.0'
}
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.TaskCompletionSource;
public class MyTask extends Task<Void> {
private boolean isCancelled = false;
private boolean isPaused = false;
@Override
public boolean cancel() {
isCancelled = true;
return true;
}
@Override
public boolean isCanceled() {
return isCancelled;
}
@Override
public boolean pause() {
isPaused = true;
return true;
}
@Override
public boolean resume() {
isPaused = false;
return true;
}
public static TaskCompletionSource<Void> doAsyncWork() {
TaskCompletionSource<Void> taskCompletionSource = new TaskCompletionSource<>();
new Thread(() -> {
if (isCancelled()) {
taskCompletionSource.setException(new Exception("Task cancelled"));
return;
}
while (isPaused()) {
try {
} catch (InterruptedException e) {
e.printStackTrace();
}
}
taskCompletionSource.setResult(null);
}).start();
return taskCompletionSource.getTask();
}
}
Task<Void> myTask = MyTask.doAsyncWork();
myTask.cancel();
myTask.pause();
myTask.resume();