RxAndroid Scheduler 자세히 알아보기
RxAndroid에서는 스케쥴러를 통해 어느 쓰레드에서 실행이 될지 결정 할 수 있습니다.
스케쥴러는 subsctibeOn(), observeOn() 에서 각각 지정할 수 있는데
subsctibeOn()은 observable의 작업을 시작하는 쓰레드를 선택 할 수 있습니다.
중복해서 적을 경우 가장 마지막에 적힌 스레드에서 시작합니다.
observeOn()은 이후에 나오는 오퍼레이터, subscribe의 스케쥴러를 변경 할 수 있습니다.
위 그림을 보면 SubscribeOn 연산자를 중간에서 지정하고있습니다.연산자 체인 중 아무 곳에서 호출해도 문제되지 않습니다.
즉 , 오퍼레이터 어디서든지 subscribveOn을 사용하면 시작할 스케줄러를 정할 수 있습니다
RxJava와 RxAndroid 에서 제공하는 스케줄러
- Schedulers.computation() - 이벤트 룹에서 간단한 연산이나 콜백 처리를 위해 사용됩니다.
RxComputationThreadPool라는 별도의 스레드 풀에서 돌아갑니다. 최대 cㅔu갯수 개의 스레드 풀이 순환하면서 실행됩니다.
- Schedulers.immediate() - 현재 스레드에서 즉시 수행합니다.
observeOn()이 여러번 쓰였을 경우 immediate()를 선언한 바로 윗쪽의 스레드를 따라갑니다.
- Schedulers.from(executor) - 특정 executor를 스케쥴러로 사용합니다.
- Schedulers.io() - 동기 I/O를 별도로 처리시켜 비동기 효율을 얻기 위한 스케줄러입니다.
자체적인 스레드 풀 CachedThreadPool을 사용합니다. API 호출 등 네트워크를 사용한 호출 시 사용됩니다.
- Schedulers.newThread() - 새로운 스레드를 만드는 스케쥴러입니다.
- Schedulers.trampoline() - 큐에 있는 일이 끝나면 이어서 현재 스레드에서 수행하는 스케쥴러.
- AndroidSchedulers.mainThread() - 안드로이드의 UI 스레드에서 동작합니다.
- HandlerScheduler.from(handler) - 특정 핸들러 handler에 의존하여 동작합니다.
'Rx' 카테고리의 다른 글
Debounce , Throttle (0) | 2019.09.10 |
---|---|
TestObserver ,TestScheduler 를 이용한 테스트작성하기 (0) | 2019.09.10 |
RxJava 테스팅과 Flowable-5( Flowable을 활용한 배압 이슈 대응하기) (2) | 2019.01.01 |
RxJava 테스팅과 Flowable-4( Flowable 클래스) (0) | 2019.01.01 |
RxJava 테스팅과 Flowable-3(비동기 테스트) (0) | 2019.01.01 |
댓글