본문 바로가기
Rx

RxAndroid Scheduler 자세히 알아보기

by 봄석 2019. 9. 9.

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에 의존하여 동작합니다.

댓글