Как мне вернуть ListenableFuture <Result>с менеджером работ 2.0? - PullRequest
1 голос
/ 17 мая 2019

Кажется, что ListenableWorker больше не имеет ограничения @RestrictTo (RestrictTo.Scope.LIBRARY_GROUP), однако я не могу найти или найти примеры того, как правильно вернуть ListenableFuture в моей переопределенной функции startWork ().

Насколько я могу судить, единственный вариант - вернуть SettableFuture.create (), но для этого по-прежнему необходимо подавить предупреждение / ошибку RestrictedApi.

Кто-нибудь знает более простой способ?

Edit: насколько я понял, это способ сделать это, используя CallbackToFutureAdapter.Completer

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

}

1 Ответ

2 голосов
/ 17 мая 2019

Согласно странице документации Threading в ListenableWorker :

Вы можете создать ListenableFutures одним из двух способов:

  1. Если вы используете Guava,используйте ListeningExecutorService.
  2. В противном случае включите councurrent-futures в ваш файл Gradle и используйте CallbackToFutureAdapter.
...