Android developer docs显示了如何使用ListenableWorker的示例。但是,尽管已将councurrent-futures
添加到我的项目中,但我现在看到文档中使用的相关Callback对象:
@NonNull
@Override
public ListenableFuture<Result> startWork() {
return CallbackToFutureAdapter.getFuture(completer -> {
Callback callback = new Callback() {
...
}
有人能指出我正确的方向吗? Callback
中似乎根本没有androidx.concurrent.callback
类。
this实际上是我发现的唯一完全使用CallbackToFutureAdapter.getFuture
的代码示例。
答案 0 :(得分:1)
查看类似API的文档,在我看来回调 本身不是API,而是带有结果的任何操作的通用表示形式。
https://developer.android.com/reference/androidx/concurrent/futures/CallbackToFutureAdapter.html
作为示例,您可以如下定义回调,
interface AsyncCallback {
void onSuccess(Foo foo);
void onError(Failure failure);
}
以及startWork方法如下
@Override
public ListenableFuture<Result> startWork() {
return CallbackToFutureAdapter.getFuture(completer -> {
AsyncCallback callback = new AsyncCallback() {
int successes = 0;
@Override
public void onError(Failure failure) {
completer.setException(failure.getException());
}
@Override
public void onSuccess(Foo foo) {
completer.set(Result.success());
}
};
for (int i = 0; i < 100; ++i) {
downloadAsynchronously("https://www.google.com", callback);
}
return callback;
});
}