gpt4 book ai didi

android - 工作管理器 : ResolvableFuture can only be called from within the same library group prefix

转载 作者:行者123 更新时间:2023-12-03 21:16:12 28 4
gpt4 key购买 nike

有一段时间在我的ListenableWorker类我使用了以下内容:

public ListenableFuture<Result> startWork() {
ResolvableFuture<Result> resolvableFuture = ResolvableFuture.create();
startSomeAsyncStuff(resolvableFuture);
return resolvableFuture;
}

基本上,我开始一些异步工作,通过 resolvableFuture进入那个功能。异步工作完成后,我在 resolvableFuture 上调用以下命令从我的 ListenableWorker 传递的对象:
resolvableFuture.set(Result.success());

这运作良好,而且似乎仍然有效,但我现在看到以下针对 ResolvableFuture.create() 的 lint 错误消息:

ResolvableFuture can only be called from within the same library group prefix



它仍然可以编译,但是这个警告让我很困扰。现在这样做的正确方法是什么?

最佳答案

你不应该使用 ResolvableFuture更不用说 WorkManager 使用的内部版本了。

相反,您应该使用 AndroidX Concurrent library :

androidx.concurrent:concurrent-futures:1.0.0 provides CallbackToFutureAdapter class, a minimalistic utility that allows to wrap callback based code and return instances of ListenableFuture



您会在 1.0.0-beta01 release notes 中注明甚至 AndroidX 并发库也删除了 ResolveableFuture来自其公共(public) API。

Javadoc for CallbackToFutureAdapter 有一个完整的例子:
public ListenableFuture<Result> startWork() {
return CallbackToFutureAdapter.getFuture(completer -> {
// Your method can call set() or setException() on the
// Completer to signal completion
startSomeAsyncStuff(completer);

// This value is used only for debug purposes: it will be used
// in toString() of returned future or error cases.
return "startSomeAsyncStuff";
});
}

所以你会使用 CallbackToFutureAdapter.Completer 代替 ResolvableFuture在您的 startSomeAsyncStuff方法。

关于android - 工作管理器 : ResolvableFuture can only be called from within the same library group prefix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60457795/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com