我正在使用 Retrofit 在 Android 中编写一个 API 客户端,这种代码会重复很多次:
myObservableFromRetrofit
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(... print stack trace ...)
我想知道是否有一种技术可以避免重复这些事情。
我通过以下方式围绕对改造功能的调用:
public Observable<?> commonObservable(Observable<?> observable) {
return observable
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(... print stack trace ...)
}
但这会丢失泛型类型信息。
您应该使用 compose() 运算符,而不是包装您的 Observables,详细信息请参阅这篇博文 http://blog.danlew.net/2015/03/02/dont-break-the-chain/。所以你会有:
<T> Transformer<T, T> applySchedulers() {
return observable -> observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(... print stack trace ...)
}
你可以这样称呼它:
myObservableFromRetrofit
.compose(applySchedulers())
或者,如果您在 JDK 8 以下进行编译:
myObservableFromRetrofit
.compose(this.<YourType>applySchedulers())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)