Ответ 1
Вопрос
Дооснащение Уже в фоновом режиме. Тогда зачем нужна другая фоновая задача RxJava?
Я думаю, что наиболее важно, избегайте вложенных обратных вызовов (callback hell
).
, например) 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
}
});
, например.) Избегайте обратного вызова (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
, чтобы избежать этой ситуации.
Дополнительные
Вышеприведенный фрагмент кода является лишь примером.
Фактически, RxJava
содержит гораздо больше observe pattern
связанных функций.
Дополнительно - преимущество программирования, управляемого событиями, в Android (RxJava)
Большинство Android application
создаются на основе пользователя или данных interaction
. (например, обновление GUI при взаимодействии). Таким образом, мы рассматриваем их как set of events
, а проектирование и создание приложения на основе этого очень интуитивно понятное и подходящее для внутренних и внешних событий.