Maison  >  Article  >  Java  >  Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

黄舟
黄舟original
2017-03-31 10:55:571392parcourir

Cet article présente principalement des informations pertinentes sur les nouvelles fonctionnalités de RxJava 2.x. L'article le présente en détail à travers des images, des textes et des exemples de codes. Il a une certaine valeur de référence pour tous les amis qui en ont besoin. ci-dessous.

Qu'est-ce que RxJava

Rx est une programmation réactive asynchrone, l'essence est le modèle d'observateur , programmation réactive asynchrone avec observateurs et abonnés.

Cet article présente principalement des informations pertinentes sur les nouvelles fonctionnalités de RxJava 2.x. Pas grand chose à dire ci-dessous, jetons un œil à l'introduction détaillée.

Séparation de la contre-pression

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Flowable/Abonné

Flowable.range(0,10)
.subscribe(new Subscriber<Integer>() {
 Subscription sub;
 //当订阅后,会首先调用这个方法,其实就相当于onStart(),
 //传入的Subscription s参数可以用于请求数据或者取消订阅
 @Override
 public void onSubscribe(Subscription s) {
 Log.w("TAG","onsubscribe start");
 sub=s;
 sub.request(1);
 Log.w("TAG","onsubscribe end");
 }
 @Override
 public void onNext(Integer o) {
 Log.w("TAG","onNext--->"+o);
 sub.request(1);
 }
 @Override
 public void onError(Throwable t) {
 t.printStackTrace();
 }
 @Override
 public void onComplete() {
 Log.w("TAG","onComplete");
 }
});

Sortie :

onsubscribe start
onNext--->0
onNext--->1
onNext--->2
...
onNext--->10
onComplete
onsubscribe end

Comme vous pouvez le voir à partir de la sortie du code ci-dessus, lorsque nous appelons la méthode subscription.request(n), Avant le code derrière onSubscribe() est exécuté, la méthode onNext sera exécutée immédiatement. Par conséquent, si vous utilisez une classe qui doit être initialisée dans la méthode onNext, vous devriez essayer de l'initialiser avant d'appeler la méthode subscription.request(n) ;<.>

Une autre méthode de création

Flowable.create(new FlowableOnSubscribe<Integer>() {
  @Override
  public void subscribe(FlowableEmitter<Integer> e) throws Exception {
  e.onNext(1);
  e.onNext(2);
  e.onNext(3);
  e.onNext(4);
  e.onComplete();
  }
 }
 //需要指定背压策略
 , BackpressureStrategy.BUFFER);

Autres modes d'observateur

  • Single/SingleObserver

  • Completable/CompletableObserver

  • Peut-être/Peut-êtreObserver


Les trois ci-dessus sont similaires , plus adapté à l'envoi d'une seule donnée, ne convient pas à l'envoi d'une grande quantité de données.

//判断是否登陆
Maybe.just(isLogin())
 //可能涉及到IO操作,放在子线程
 .subscribeOn(Schedulers.newThread())
 //取回结果传到主线程
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(new MaybeObserver<Boolean>() {
  @Override
  public void onSubscribe(Disposable d) {
  }
  @Override
  public void onSuccess(Boolean value) {
  if(value){
   ...
  }else{
   ...
  }
  }
  @Override
  public void onError(Throwable e) {
  }
  @Override
  public void onComplete() {
  }
 });
En fait, ce mode observateur ne sert pas à envoyer une grande quantité de données, mais à envoyer une seule données, c'est-à-dire que lorsque vous voulez uniquement le résultat (vrai ou faux) d'un certain

événement , vous pouvez utiliser ce modèle d'observateur

Action Rx1.0————–Rx2.0

Action1——–Action


Action1——–Consommateur


Action2——–BiConsumer


Les actions suivantes ont été supprimées, uniquement ActionN

Référence

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Une introduction graphique et textuelle résumant les nouvelles fonctionnalités de RxJava 2.x

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn