41 votes

Pourquoi RxJava est-il souvent utilisé avec Retrofit?

Quel est l'avantage d'utiliser Retrofit en association avec Rxjava?

38voto

Ethan Choi Points 920

Question

Rénovation Déjà à exécuter sur le thread d'arrière-plan. Alors pourquoi faut-il une autre tâche en arrière-plan RxJava?

Je pense que la plupart des importanly, éviter imbriqués les rappels(callback hell).

e.g) de Rappel de l'enfer (Rénovation)

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
    }
});

e.g) Éviter de Rappel de l'enfer(Rénovation + 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();

si vous utilisez RxJava vous pouvez utiliser Observable afin d'éviter cette situation.

Supplémentaires

L'extrait de code ci-dessus est juste un exemple.

En fait, RxJava contient beaucoup plus d' observe pattern liés à des caractéristiques.

De plus, des Avantages de la Programmation événementielle dans Android (RxJava)

La plupart des Android application sont construits avec la fonction de l'utilisateur ou des données interaction. (e.g GUI mises à jour lorsque l'interaction se produit). Si nous les voyons comme un set of events et de la conception et de la construction d'une application basée sur ce qui est une très intuitive et adaptée pour les événements internes et externes.

10voto

koperko Points 1685

Pour comprendre ces avantages, vous devez d'abord comprendre comment il est bénéfique pour votre base de code à adopter Réactif Extensions.

  • La composabilité et de transformation

    • Les ruisseaux offrent de très composable interface. Elle vous permet d'effectuer la transformation ( sur la structure et l'heure de l'événement), des opérations et, fondamentalement, d'interagir ( par exemple, des dépendances ou des recours résultat/erreur à partir d'un autre flux ) entre les divers courants de façon transparente. Bien que vous pouvez le faire avec des rappels, si vous essayez de mettre en œuvre une plus compliqué de cas d'utilisation, qui peut être aussi simple que de 3 sur demande, le code va perdre de sa lisibilité très rapidement. D'autre part, Rx permet de mettre en œuvre très complexe scénarios et encore look lisse.
  • Le filetage et les opérations asynchrones

    • Rx vous donne un contrôle très précis sur les threads seront utilisés pour effectuer des travaux dans les différents points à l'intérieur d'un flux de données. Le point le contraste ici, déjà, de l'appel de base de l'approche utilisée pour le Rétrofit est le seul établissement du programme de travail sur ses threads de travail et de transmettre le résultat dans le thread appelant. Lorsqu'ils sont déclarés comme un ruisseau, de rénovation ne gère pas le filetage et le laisse à vous seul qui vous donne le contrôle.
  • Rx bibliothèques

    • Comme vous l'avez probablement déjà vu, il existe de nombreuses bibliothèques qui tirent parti de la Réactif extensions et de mettre en œuvre diverses fonctionnalités comme un flux. Vous pouvez facilement profiter d'eux lorsque vous travaillez avec vos demandes

Il y a d'autres avantages à côté de ceux-ci, mais vous pouvez dire que c'est très bénéfique pour aller réactif. Les demandes sont très un bon point de départ pour apprendre à travailler avec des ruisseaux et introduire progressivement de plus en plus et flux de logique dans votre base de code.

Ce n'est pas une substitution. RxJava et de Rénovation sont un match parfait, c'est pourquoi il y a un support natif pour en de Rénovation en premier lieu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X