我是新架构组件 WorkManager 的新手,我通过 Retrofit 和 RxJava 进行 API 调用。
我的用例是从后端获取新帖子,然后显示通知并更新小部件。
所以 Worker 类的 doWork() 方法中的代码可能看起来像这样。
@NonNull
@Override
public Result doWork() {
AppDependencies appDependencies = new AppDependencies((Application) getApplicationContext());
Repository repository = appDependencies.getRepository();
repository.getNewPosts()
.flatMap(newPosts -> repository.inserPosts(newPosts).toObservable())
.doOnError(Timber::e)
//if success - > return Result.SUCCESS,
// -> show notification
// -> update widget
// error-> return Result.Failure
.dontKnowWhatBestNextThing; //blocking or subscribing
//if we reached here then Retry
return Result.RETRY;
}
我的问题是在 Worker 类中使用 RxJava 代码的正确方法是什么,因为 doWork() 方法有一个返回值,所以我必须使 Rx 代码同步吗?
如果我使用的是非阻塞 Rx 方法,我该如何返回值(成功 - 失败 - 重试)