Heim >Java >javaLernprogramm >Eine grafische und textliche Einführung, die die neuen Funktionen von RxJava 2.x zusammenfasst
Dieser Artikel stellt hauptsächlich relevante Informationen zu den neuen Funktionen von RxJava 2.x vor. Der Artikel stellt ihn ausführlich anhand von Bildern, Texten und Beispielcodes vor. Er hat einen gewissen Referenzwert für alle, die ihn benötigen unten.
Was ist RxJava
Rx ist asynchrone reaktive Programmierung, die Essenz ist das Beobachtermuster , asynchrone reaktive Programmierung mit Beobachtern und Abonnenten.
In diesem Artikel werden hauptsächlich relevante Informationen zu den neuen Funktionen von RxJava 2.x vorgestellt. Im Folgenden gibt es nicht viel zu sagen, werfen wir einen Blick auf die detaillierte Einführung.
Abscheidung von Gegendruck
Flowable/Subscriber
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"); } });
Ausgabe:
onsubscribe start onNext--->0 onNext--->1 onNext--->2 ... onNext--->10 onComplete onsubscribe end
Wie Sie aus der Ausgabe des obigen Codes sehen können, wenn wir die subscription.request(n)
-Methode aufrufen, Vorher Wenn der Code hinter onSubscribe()
ausgeführt wird, wird die onNext-Methode sofort ausgeführt. Wenn Sie also eine Klasse verwenden, die in der onNext-Methode initialisiert werden muss, sollten Sie versuchen, sie zu initialisieren, bevor Sie die subscription.request(n)
-Methode aufrufen 🎜>
Eine andere Erstellungsmethode
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);
Andere Beobachtermodi
//判断是否登陆 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() { } });Tatsächlich wird dieser Beobachtermodus nicht zum Senden einer großen Datenmenge, sondern zum Senden einer einzelnen Datenmenge verwendet Daten, das heißt, wenn Sie nur das Ergebnis (wahr oder falsch) eines bestimmten
Ereignisses möchten, können Sie dieses Beobachtermuster
Aktion verwenden Rx1.0————–Rx2.0
Referenz
Zusammenfassung
Das obige ist der detaillierte Inhalt vonEine grafische und textliche Einführung, die die neuen Funktionen von RxJava 2.x zusammenfasst. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!