How do I return a ListenableFuture<Result> with work manager 2.0?

柔情痞子 提交于 2019-11-29 23:54:32

问题


It seems ListenableWorker no longer has the @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) restriction however I can't figure out or find examples on how to properly return a ListenableFuture< Result> in my overriden startWork() function.

As far as I can tell, the only option is to return a SettableFuture.create< Result>() but that still requires suppressing the "RestrictedApi" warning/error.

Anyone know a simpler way ?

Edit: This is the way to do it as far as I've gathered which makes use of CallbackToFutureAdapter.Completer

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

}

回答1:


As per the Threading in ListenableWorker documentation page:

You can create ListenableFutures one of two ways:

  1. If you use Guava, use ListeningExecutorService.
  2. Otherwise, include councurrent-futures in your gradle file and use CallbackToFutureAdapter.


来源:https://stackoverflow.com/questions/56176554/how-do-i-return-a-listenablefutureresult-with-work-manager-2-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!