Quel est l'avantage d'utiliser Retrofit en association avec Rxjava?
Réponses
Trop de publicités?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.
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.