Dev/Android

RxJava - RxAndroid 공부

healthyryu 2017. 2. 22. 08:30

RxJava - RxAndroid 공부






RxJava 를 공부하면서 몇가지 정리를 합니다.

도움이 되거나 혹은 수정할 사항이 있을 경우 알려주시면 감사하겠습니다 :)


1. 크게 RxJava 에는 크게 2가지 개념을 기억하면 됩니다. ObservableObserver 입니다.


2. 간단하게 Observable 은 값을 보내고 Observer 는 subscribe() 라는 구독이라는 메서드를 통해서 보낸 데이터를 받아서 처리한다 라고 생각해볼 수 있습니다.


3. ObserverObservable 이 값을 보낼때, 값이 더이상 없을 때, 에러가 났을때 3가지 액션에 대해 반응을 합니다. 

 - 값을 보낼때 :onNext()

 - 에러가 났을때 : onError()

 - 값이 더 없을때 : onCompleted()


4. Observable.just() 는 하나의 Item 을 바로 발행(emit)하는 간단한 일을 합니다. 간단한 데이터만 전달할 경우, Observable 을 굳이 새로 만들지 않고 쉽게 Observable 을 만들어주는 유틸리티 메서드 입니다. 원래는 첫번째 처럼해야하는데 그것을 두번째 처럼 바꿀 수 있습니다.

1
2
3
4
5
6
Observable<String> observable = Observable.create(new OnSubscribe<String>() {
  @Override
  public void call(Subscriber<super String> subscriber) {
    subscriber.onNext(“hello”);
    subscriber.onCompleted();
  }
});
cs


1
Observable<String> observable1 = Observable._just_(“hello”);
cs


5. Observer 가 데이터를 처리할때, 통신을 하거나 SQLite 등을 사용하는 복잡한 Input/Output 을 할경우 UIThread 에서는 할 수가 없습니다. 그렇기 때문에 UIThread 가 아닌 다른 스레드에서 작동이 되어야 합니다.

.subscribeOn(Schedulers.io())


를 추가해서 메인쓰레드(UIThread) 에서 작동하지 않고 Schedulers.io() 에서 처리하게 합니다.

여기서 Scheduler.io() 는 RxJava 에서 제공하는 '동기 I/O 를 별도로 처리시켜 비동기 효율을 얻기 위한 스케쥴러' 입니다.


6. 안드로이드 UI 화면에 가공된 데이터를 반영하는 일은 UIThread 에 맡겨야합니다.

.observeOn(AndroidSchedulers.mainThread())

RxAndroid 에서 제공하는 UIThread 를 이용합니다.



참고

1. Realm, RxAndroid로 리액티브 앱 만들기 시리즈 참고 - 1편, 2편, 3편, 4편

2. Kurtis Nusbaum 개발자 Medium 참고



반응형