ktu*_*nio 3 android rx-java retrofit
我正在使用 Retrofit 在 Android 中编写一个 API 客户端,这种代码被重复了很多次:
myObservableFromRetrofit
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(... print stack trace ...)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种技术可以避免重复这些东西。
我围绕对改造功能的调用:
public Observable<?> commonObservable(Observable<?> observable) {
return observable
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(... print stack trace ...)
}
Run Code Online (Sandbox Code Playgroud)
但这会丢失泛型类型信息。
您应该使用 compose() 运算符,而不是包装您的 Observables,如本博文中所述。所以你会有:
<T> Transformer<T, T> applySchedulers() {
return observable -> observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(... print stack trace ...)
}
Run Code Online (Sandbox Code Playgroud)
你会这样称呼它:
myObservableFromRetrofit
.compose(applySchedulers())
Run Code Online (Sandbox Code Playgroud)
或者这个,如果你在 JDK 8 下编译:
myObservableFromRetrofit
.compose(this.<YourType>applySchedulers())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |