시작, 리액티브 프로그래밍 - 기본개념 (옵저버블, 디스포저블, 스케쥴러)
리액티브 프로그래밍에 관한 책을 완주하며 정리하려고 한다.
참고하는 책은 <리액티브 안드로이드 프로그래밍, RxJava로 안드로이드 어플리케이션 제작하기 > 이며,
일단 천천히 따라가볼 생각이다.
중요 개념
1. 옵저버블(Obserber) : 데이터의 출처 (source)
- 모든것은 옵저버블과 시작된다. 기본적으로 데이터 스트림을 활용하는 범용 인터페이스이다.
옵저버블의 생성
Observable.just("First Item" , "Second Item");
이렇게만 생성하면 영원히 전송되지 않는다. .just() 와 같은 도구로 생성하고, .subscribe() 로 호출해준다
누군가 구독해야 활성화가 된다. !
1) 핫 옵저버블 : 생성되면서 내부적으로 아이템을 생성한다. 계속해서 업데이트 되는 형태의 경우가 해당됨
2) 콜드 옵저버블 : 구독하기 전까지는 아이템이 전송되지 않는다.
2. 디스포저블 : 옵저버블의 생애주기를 제어 하기위해 사용한다. 제어하지 않는 다면, 영원히 활성화 될수도있엉 ㅇ_ㅇ
- dispose() / isDisposed() 두가지 메소드가 있으며,
이름 그대로 전자는 구독을 취소할때 사용, 후자는 활성화 여부를 알 수 있는 메소드 이다
* 구독이 취소되면 다시 사용 할 수 없다. 다시만들어야행..
Disposable dis = Observable.just("First Item" , "Second Item")
.subscribe();
- CompositeDisposable을 사용하여 그룹화도 가능하다. (사용 중이던 액티비티의 아이템들을 한번에 종료해야 하는 경우등에 유용 )
Disposable dis = new CompositeDisposable(
Observable.just("First Item" , "Second Item").subscribe(),
Observable.just("Second Item" , "HJJ Item").subscribe()
Observable.just("HJJ Item" , "HJHJ Item").subscribe()
);
3. 스케쥴러 (Scheduler) : 데이터가 처리되는 위치를 정의하는 방법 , 단위의 일정을 만들며, 특정 스레드를 선택 할 수 있다.
Observable.just("First Item" , "Second Item")
.subscribeOn(Schedulers.io());
.subscribe();
사용되는 주요 스케쥴러는 ,
- Schedulers.io()
- Schedulers.computation()
- Schedulers.newThread()
- AndroidSchedulers.mainThread()