Eth*_*hoi 38
题
改造已经在后台线程上运行.那为什么需要另一个后台任务RxJava?
我认为最重要的是避免嵌套回调(callback hell).
例如)回调地狱(改造)
public interface MyService
{
@GET("users")
Call<List<UserModel>> getUser();
@GET("userinfo")
Call<UserInfoModel> getUserInfoById(@Query("id") Integer id);
}
service.getUser().enqueue(new Callback<UserModel>() {
@Override
public void onResponse(Call<UserModel> call, Response<UserModel> response) {
//process UserModel
UserModel data = response.body();
//if you want user infomation from server
service.getUserInfo(data.getId()).enqueue(new Callback<UserInfoModel>(){
//... is callback hell!!
});
}
@Override
public void onFailure(Call<UserModel> call, Throwable t) {
//error handling
}
});
Run Code Online (Sandbox Code Playgroud)
例如)避免回调地狱(Retrofit + RxJava)
public interface MyService
{
@GET("users")
Observable<List<UserModel>> getUser();
@GET("userinfo")
Observable<UserInfoModel> getUserInfoById(@Query("id") Integer id);
}
service.getUser()
.flatMapIterable(list -> list)
.flatMap(user -> service.getUserInfoById(user.getId()))
.doOnNext(userinfo -> saveUserInfo(userinfo)).subscribe();
Run Code Online (Sandbox Code Playgroud)
如果您正在使用,RxJava您可以使用Observable以避免这种情况.
额外
上面的代码片段只是一个例子.
实际上,RxJava包含更多observe pattern相关功能.
附加 - Android中事件驱动编程的好处(RxJava)
大多数Android application是基于用户或数据构建的interaction.(例如,当交互发生时GUI更新).因此,我们将这些看作是set of events一个基于此的设计和构建应用程序是非常直观和适合内部和外部事件.
kop*_*rko 10
要了解这些优势,您必须首先了解代码库采用Reactive Extensions的好处.
可组合性和转换
线程和异步操作
Rx库
除了这些之外还有其他优点,但是你可以看出去反应是非常有益的.请求是学习使用流并逐渐在代码库中引入越来越多的流逻辑的良好起点.
这不是替代品.RxJava和Retrofit是一个完美的匹配,这就是为什么首先在Retrofit中为它提供原生支持的原因.
| 归档时间: |
|
| 查看次数: |
2038 次 |
| 最近记录: |