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();


上一篇:
下一篇:
切换中文