Android Programjaim

Android fejlesztes, java, kotlin, web.. miegymas:)

RxAndroid - 1. resz

2016. július 04. 12:10 - lacas82

Eloszor is a megszokott jutub videjo

 

Ezt a videot valasztottam, mert vicces benne a srac, neha hasonloan gondolkozom, hasonlo szohasznalattal, mint o. Kicsit talan tul sok a "shit" benne. :)

Hogy kezdjunk neki:

https://github.com/ReactiveX/RxAndroid

Android Studio gradle, dependencies:

compile 'io.reactivex:rxandroid:1.2.1'

"Observables and Subscribers. The first ones will emit any number of items to all the Subscribers that are listening to the changes."

Elso korben nezzuk az RxAndroid ket fo pontjat, az Observablest, es a Subscriberst. Magyarul talan megfigyelo, feliratkozo.

Observable.OnSubscribe observableAction = new Observable.OnSubscribe<String>() {
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext(“Hello, World!”);
subscriber.onCompleted();
}
};
Observable<String> observable = Observable.create(observableAction);


Eloszor tehat letrehozunk egy observablet, a fenti modon.
A Hello World 'String'et fogjuk visszakapni ebbol ugye. Azert van mindenhol String.
Az observable barmilyen bemenetu cuccot kisugaroz majd a subscriberre, ami figyeli
a valtozast. Huh nem tudom mennyire ertheto, magyarul megfogalmazni ezt eleg nehez,
de primitiv dologrol van szo.

Ilyenkor meg semmi se tortenik, kell egy Subscriber ugye, amivel feliratkozunk ra.

Subscriber<String> textViewSubscriber = new Subscriber<String>() {
public void onCompleted() {}
public void onError(Throwable e) {}
public void onNext(String s) {
txtPart1.setText(s);
}
};
Subscriber<String> toastSubscriber = new Subscriber<String>() {
public void onCompleted() {}
public void onError(Throwable e) {}
public void onNext(String s) {
Toast.makeText(context, s, Toast.LENGTH_SHORT).show();
}
};


Itt van 2 db Subscriberunk, az elso siman kiloki onNext-re
a Hello World-ot egy TextView-be, mig a masodik egy Toast-ban megjeleniti azt. 

Ok megvannak a Subscriberek, es az Observable, mar csak ossze kene kotozni a kettot.


Viszont azt akarjuk, hogy a Main Thread-en kapjuk vissza a cuccokat, mivel az UI threaden akarunk dolgokat csinalni, a TextView ott van.


observable.observeOn(AndroidSchedulers.mainThread());
observable.subscribe(textViewSubscriber);
observable.subscribe(toastSubscriber);


Azaz, observeOn, hol tortenjen meg, subscribe pedig, hogy mire/mikre iratkozzon fel.

Termeszetesen AsyncTask-eket is kivalthatunk majd ezzel, Thread-eken keresztul, majd a kesobbiekben latunk ezekre peldat.

Bovebb leiras