AFAAIK,Retrofit在内部使用RxJava。如果我不想过滤,排序或修改从api收到的数据,那么将Retrofit与RxJava集成到here外部的优势是什么?是吗?减少从api获取响应的时间?它以什么方式帮助提高api调用的性能?
答案 0 :(得分:2)
Retrofit在RxJava之前作为项目开始,您曾经通过回调检索API。接下来是RXJava和两者之间更严格的整合是可能的。因此,您可以使用Call<T>
/ Observable
接口更改Flowable
,而是使用回调到代码中的方法来检索结果,直接利用反应范例的强大功能。
请考虑在构建Retrofit时必须指定使用RXJava
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseUrl);
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//here
.addConverterFactory(GsonConverterFactory.create())
.build();
说RXJava在内部实现Retrofit有点棘手,Retrofit仍然是独立的,只是RXJava提供了一些绑定代码,这样你就可以让Retrofit2成为一个Observable。
此代码取自here,解释如何绑定两个
public interface UserService {
@POST("/me")
Observable<User> me();
}
// this code is part of your activity/fragment
Observable<User> observable = userService.me();
observable
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<User>() {
@Override
public void onCompleted() {
// handle completed
}
@Override
public void onError(Throwable e) {
// handle error
}
@Override
public void onNext(User user) {
// handle response
}
});
然后你问了很多问题,在stackoverflow中你会得到一个回复。 请注意,使用RXJava和Retrofit集成的优势非常多,例如,您可以更加干净,可测试,并且您不必考虑并发问题。对于正常情况,我得到的表现是相同的。
修改强>
要更好地了解何时使用RXJAVA + Retrofit,只需要进行改造,您就可以看到post
除了该内容之外,请考虑在单个类中以功能方式查看所有成功非常有用,再加上OnComplete,您可以进行任何类型的转换。
此外,将多个通话组合为here要容易得多,优势在现实生活中非常明显, 而且只是单独考虑这两个代码来进行测试和维护代码清洁是两大优势。
您还可以使用Retrofit探索新的Google架构功能组件,您可以在其中使用RXJava或LiveData