Android上rxjava的默认调度程序

dsg*_*dsg 13 java multithreading android rx-java retrofit

我正在使用Retrofit为我的异步网络调用返回rxjava Observable.

我发现自己重复以下调用:

someApiCall().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())

好像我总是订阅IO线程并观察Android主线程.这似乎是我发现的所有资源的最佳实践.也许除了长时间运行的计算之外,我不太明白何时我们想要偏离这种模式.

有没有办法通过默认subscribeOn和observeOn线程来删除这个样板?

这是rxjava插件的用例吗?(我找不到很多使用它们的例子.)

我可以通过搞乱改造执行器来设置网络边界的默认线程吗?

Jak*_*ton 13

对于Observable响应,Retrofit当前将其设置subscribeOnRestAdapter(提供的或默认的)HTTP执行器.这样做是为了将RxJava支持填充到现有行为中.

2.0的计划是提供为两者subscribeOnobserveOn明确设置默认值的能力(无论是两者,只有一个,还是两者都没有).

例如,如果您需要将多个API调用链接在一起,那么您不希望总是希望在主线程上进行观察的原因.


Xia*_*zou 6

Retrofit Version 2.0.0-beta2(2015-09-28)的更改日志显示在后台运行需要subscribeOn().

修复:可观察和基于单一的请求执行现在同步运行(因此需要subscribeOn()才能在后台运行).