implementation 'com.google.android.gms:play-services-tasks:17.2.1'
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.TaskCompletionSource;
public class TaskExecutor {
private TaskCompletionSource<Void> mCompletionSource;
public TaskExecutor() {
mCompletionSource = new TaskCompletionSource<>();
}
public void executeTasks() {
Task<Void> firstTask = task1();
Task<Void> secondTask = task2();
firstTask.onSuccessTask(task -> secondTask)
.addOnSuccessListener(aVoid -> {
// ...
mCompletionSource.setResult(null);
})
.addOnFailureListener(exception -> {
// ...
mCompletionSource.setException(exception);
});
}
public Task<Void> getCompletionTask() {
return mCompletionSource.getTask();
}
private Task<Void> task1() {
// ...
return TaskCompletionSource.<Void>voidTask();
}
private Task<Void> task2() {
// ...
return TaskCompletionSource.<Void>voidTask();
}
}
TaskExecutor executor = new TaskExecutor();
executor.executeTasks();
executor.getCompletionTask()
.addOnSuccessListener(aVoid -> {
// ...
})
.addOnFailureListener(exception -> {
// ...
});