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
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
//判断是否登陆 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
Action1——–ActionRéférence
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!