gpt4 book ai didi

android - 为什么 RxJava 经常与 Retrofit 一起使用?

转载 作者:IT王子 更新时间:2023-10-29 00:00:07 29 4
gpt4 key购买 nike

Retrofit 与 Rxjava 结合使用有什么好处?

最佳答案

问题

Retrofit Already in run on background thread. Then why need another background task RxJava?

我认为最重要的是,避免嵌套回调(callback hell)。

例如)回调 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
}
});

例如)避免回调 hell (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();

如果你使用的是RxJava,你可以使用Observable来避免这种情况。

附加

上面的代码 fragment 只是一个例子。

其实RxJava包含更多observe pattern相关的特性。

附加 - Android (RxJava) 中事件驱动编程的好处

大多数Android 应用程序 都是使用基于用户或数据的interaction 构建的。 (例如,交互发生时 GUI 更新)。因此,我们将这些视为事件集,基于此设计和构建应用程序非常直观,适用于内部和外部事件。

关于android - 为什么 RxJava 经常与 Retrofit 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42218189/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com