如何使用 Work Manager 2.0 返回 ListenableFuture<Result>?

6

看起来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())
    })

}
1个回答

6

4
在视频或博客中,几乎没有关于如何在需要运行超过10分钟的用例中使用ListenableWorker的实际工作示例。开发者文档中仅仅提到了一个不完整的示例,其代码非常难以理解。请问能否解决这个问题? @ianhanniballake尝试适应那个示例,但我一直收到CallbackToFutureAdapter.getFuture被回收的错误消息,但是没有单独的文档说明如何解决这个错误。此外,是否即将支持RxJava? - Otieno Rowland
@RowlandMtetezi - 任何工作者都可以使用setForegroundAsync(),遵循长时间运行的工作者文档。这是唯一需要的API(构建通知是很多工作,但有很多指南)。如果您想添加特定的文档,请随时提交文档错误 - ianhanniballake
2
非常希望可听工作者的文档能够得到适当更新,以展示如何使用回调未来或其他方式进行线程处理。由于现在许多服务器或SDK中的API都是异步调用,因此这一点非常重要。 - Axesh Ajmera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接