首页 > 解决方案 > 如何返回 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())
    })

}

标签: androidandroidxandroid-workmanager

解决方案


根据ListenableWorker 文档页面中的线程:

您可以通过以下两种方式之一创建 ListenableFutures:

  1. 如果您使用番石榴,请使用ListeningExecutorService.
  2. 否则,请包含councurrent-futures在您的 gradle 文件中并使用CallbackToFutureAdapter.

推荐阅读