Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
347 views
in Technique[技术] by (71.8m points)

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

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())
    })

}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...