如何使用工作管理器2.0返回ListenableFuture <result>?

时间:2019-05-16 21:00:27

标签: android androidx android-workmanager

似乎ListenableWorker不再具有@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)限制,但是我无法找出或找到有关如何在覆盖的startWork()函数中正确返回ListenableFuture 的示例。

据我所知,唯一的选择是返回SettableFuture.create (),但这仍然需要抑制“ RestrictedApi”警告/错误。

有人知道更简单的方法吗?

编辑:据我所知,这是使用CallbackToFutureAdapter.Completer

的方法。
override fun startWork(): ListenableFuture<Result> {
    return CallbackToFutureAdapter.getFuture({
        it.set(ListenableWorker.Result.success())
    })

}

1 个答案:

答案 0 :(得分:2)

按照Threading in ListenableWorker documentation page

  

您可以使用以下两种方法之一创建ListenableFutures:

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