android - 如何返回 ListenableFuture使用工作管理器 2.0?
问题描述
似乎 ListenableWorker 不再具有 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) 限制,但是我无法弄清楚或找到有关如何在我覆盖的 startWork() 函数中正确返回 ListenableFuture< Result> 的示例。
据我所知,唯一的选择是返回 SettableFuture.create<Result>() 但这仍然需要抑制“RestrictedApi”警告/错误。
有人知道更简单的方法吗?
编辑:据我所知,这是使用 CallbackToFutureAdapter.Completer 的方法
override fun startWork(): ListenableFuture<Result> {
return CallbackToFutureAdapter.getFuture({
it.set(ListenableWorker.Result.success())
})
}
解决方案
根据ListenableWorker 文档页面中的线程:
您可以通过以下两种方式之一创建 ListenableFutures:
- 如果您使用番石榴,请使用
ListeningExecutorService
.- 否则,请包含
councurrent-futures
在您的 gradle 文件中并使用CallbackToFutureAdapter
.
推荐阅读
- c# - 如何从 C# 中的 pastebin raw 之类的网站加载代码
- java - 有没有办法使用 JaCoCo Java API 检测 jar 文件?
- c# - Visual Studio Intellisense 找不到一个基类
- java - JPA - 另一个表中使用的多对多主键
- python-3.x - 带有 Python 3.6 ImageTk 的 MacOS 不显示图像
- delphi - Delphi 内联使用导致“F2084 内部错误”
- c# - 如何使用 ClosedXML 从 excel 文件中读取单元格值
- r - 在引导程序中在 R 中获取 NaN
- c# - 无法反序列化 JSON 对象
- scala - Scala私有应用方法?