1. lecke

Ez a lecke indul az Observer pattern, és nézd meg, hogyan használják RxJava. Tekintsük az alapfogalmak: Megfigyelhető és megfigyelő, és milyen típusú események használnak. Tovább elemezni egy elméleti és egy gyakorlati példát.

változat RxJava

Mielőtt elkezdenénk mechanizmusát tárgyalja RxJava, emlékezzünk a megfigyelő mintát. Ez az objektum, amely generál bizonyos események és a tárgy vagy tárgyak, amelyek aláírták és fogadni ezeket az eseményeket. Úgy gondolom, hogy a munka, amit folyamatosan használja ezt a mintát. A legegyszerűbb példa - kezelőjét a gomb megnyomása után.

A Java, vannak még eszközei ezt a mintát - class megfigyelhető és Observer interfészt. Megvalósítás Observer felület - egy tárgy, amely vár egy eseményre. Megfigyelhető - egy osztály, amely mindenki által előterjesztett az Observer-oldalak számolnak be, hogy az esemény bekövetkezett.

Ugyanez neveket használnak RxJava. És azok jelentése ugyanaz marad: Megfigyelhető generál egy eseményt, és az Observer kapja meg. De nagyot nőtt a „esemény”. A RxJava események továbbítja Megfigyelhető Observer, akkor lehet tekinteni, mint egy adatfolyamot. És az események ezen a folyam három típusa van:
1) Next - egy másik adat
2) Error - Hiba történt
3) Kész - az áramlás, majd az adatokat nem több.

Példaként nézzük meg a repülés keresést. Tegyük fel, hogy van egy módszer, amely képes futtatni a légitársaság honlapján, keressen rá a megadott feltételeknek megfelelő repülési és légijáratok került vissza hozzánk. Megkérdeztük tőle, egy cél, egy kiindulópont, dátum - és ez elkezd dolgozni.

Amint feldolgozza egymás után oldalakat generál Következő esemény, amely közvetíti az eredményt. Ie Minden megtalált repülés - új Next esemény.

Ha a módszer, hogy volt néhány komoly hibát és a folyamatos üzemeltetés nem lehetséges, az eljárás küldi a hiba esetén.

Ha a módszer sikeresen kezelték az összes ismert helyszínek és befejezte a munkát, ő küld nekünk a kitöltött esemény.


Mi történt ebben az egész rendszerben megfigyelhető és megfigyelő? keresési módszert, ha hívjon vissza megfigyelhető objektum. És mi létre Observer, melyben leírjuk a kód feldolgozására kapott eseményeket és előfizet erre megfigyelhető. Mivel a működési mód, a megfigyelhető generál eseményt, hogy megkapja a megállapított Observer:
- Következő, ha ez az esemény a következő járat, majd elrepül, és például, add hozzá a listához adapter. Így repül egymás után jelennek meg a listában, mert lehet.
- ha ez Befejezett esemény, akkor kapcsolja ki a Folyamatsáv, és értesíti a felhasználót, hogy a keresés befejeződött
- ha ez hiba esetén a felhasználó értesítést kap, hogy a keresési megszakadt egy hiba

Ebben a példában leírtam három típusú eseményeket, hogy tegyék világossá, miért van szükség. De, ha nem feltétlenül felel meg az összes ilyen típusú egyes adatfolyamot. Például megfigyelhető, amely azt mondja, a gombnyomásra. Ebben az esetben csak akkor tudunk fogadni Következő esemény egy időben. Befejezett esemény, akkor nem jön, mert a felhasználó tetszőleges számú alkalommal, hogy nyomja meg a gombot, és nem utolsó gomb nem lesz ott. Nos, a hiba itt nem valószínű, hogy kap.


Remélhetőleg, miután ez a bevezetés és példák jelentek meg megértése szerepét tárgyak Megfigyelhető és az Observer. A legnehezebb dolog az első - ez csak megkülönböztetni őket egymástól)

Nézzünk egy egyszerű példát a megfigyelhető.

Készítsen megfigyelhető így néz ki:

megfigyelhető - A leírás azt jelenti, hogy a megfigyelhető adják az adatokat String, azaz Ezután minden egyes esetben, akkor létrehoz, majd jön azzal a céllal, String. Observable.from módszer létrehoz Megfigyelhető nekünk, aki megteszi az adatokat a megadott String tömb és így a címzetthez

Hozzon létre egy befogadó, azaz Observer:

megfigyelő - a címzett az adatok String. Hadd emlékeztessem önöket, hogy elvárja, hogy megkapja a megfigyelhető események három Következő, hiba- és befejezett. És minden típusú van Observer saját névadó módszer:
onNext (String s) - ez a módszer az adatok jönnek
onError (Eldobható e) - hogy fogják hívni, ha bármilyen hibát, és kap a bemenetén a hiba adatok
onCompleted () - észrevenni, hogy minden adatot átadott

Mindkét objektumokat hoz létre, szükség van, hogy aláírja a megfigyelhető Observer módszer feliratkozás:

Közvetlenül azután előfizetés Megfigyelhető Observer hogy az összes adatot (a onNext módszer) és a jele, hogy az átvitel befejeződött (OnCompleted módszer).


Ez az egyszerű példa célja, hogy bemutassák a közötti kölcsönhatás megfigyelhető és megfigyelő. Akkor használjuk Megfigyelhető, amely képes az adatátvitelre a mellékelt tömb neki. De ez csak az egyik típusú megfigyelhető. Ezután megtanulják, hogyan kell létrehozni a különböző megfigyelhető.

mi a következő lépés

Amikor elkezdtem tanulmányozni RxJava, van, figyelembe véve az ilyen példák felmerülő kérdésekre, mint:
- Mi pont Megfigyelhető kezdett generálni események: a teremtés után, vagy ha előfizetett az Observer-eh?
- Mi fog történni, ha a jel több Observer-ek: mindegyik kap az adatokat, vagy azok, akik aláírták később, nem kap semmit?
- Hogyan hozzunk létre Megfigyelhető, hogy elküldi az eredményeket kódomat?
- Hogyan lehet munkát a megfigyelhető végre egy flow (a téma értelemben), és az eredmények jöttek a többi?

A további vizsgálat és a kísérletezés, ezek a kérdések sikeresen megoldódott, és az összes, hogy én kiterjed a későbbi tanulsága a kurzus.

Ezen felül, nézzük meg, hogy milyen lehetőségek dolgozó adatfolyamok biztosít RxJava. Például, akkor megteszi az adatfolyamot és végre különböző átalakításokat rajta: az adatok szűrése vagy átalakítani az adatokat az egyik típusról a másikra. Akkor össze az adatokat a különböző adatfolyamok egymást, párhuzamosan, vagy párban.

Is kapható RxJava kiváló eszköz streaming (ez már nem találhatóak adatfolyamok és patakok, hogy a téma). Megadhat egy patak, hogy adatokat a megfigyelhető, a másik szál, hogy végezzen az átalakítási műveletek a következő adatokat és a harmadik folyam, amely az adatokat majd jön az Observer.

Általában a téma nagyon érdekes és hasznos, és ez a tanfolyam segít megérteni.

Kapcsolódó cikkek