<aside> 💡 안드로이드에서 쓰이는 rxJava에 대한 정리 및 참고자료 모음입니다.

</aside>

참고 자료

리액티브 프로그래밍이란?

데이터 흐름과 변화 전파에 중점을 둔 프로그래밍 패러다임. 프로그래밍 언어로 데이터 흐름을 쉽게 표현할 수 있어야 하고, 데이터 흐름을 통해 하부 실행 모델이 자동으로 변화를 전파할 수 있는 것을 의미한다.

다음의 세 가지 요소로 구분된다. RX = Observable + Observer + Schedulers

RxJava의 기본 구조

Observable<Integer> observable = Observable
   .just(1, 2, 3, 4, 5) 
   .filter(new Func1<Integer, Boolean>() {
	     @Override public Boolean call(Integer integer) {
           //check if the number is odd? If the number is odd return true, to emmit that object.
           return integer % 2 != 0;
       }
    });

Observer<Integer> observer = new Observer<Integer>() {
   @Override public void onCompleted() {
       System.out.println("All data emitted.");
   }

   @Override public void onError(Throwable e) {
       System.out.println("Error received: " + e.getMessage());
   }

   @Override public void onNext(Integer integer) {
       System.out.println("New data received: " + integer);
   } 
};

Subscription subscription = observable
   .subscribeOn(Schedulers.io()) //observable will run on IO thread.
   .observeOn(AndroidSchedulers.mainThread()) //Observer will run on main thread.
   .subscribe(observer); //subscribe the observer

Making Code Changes

Reviewing Code