2017-01-17 2 views
0

RxJava, 영역 및 추가 기능을 사용하는 응용 프로그램에서 작업 중입니다.여러 스레드에서 관찰 할 수있는 RxJava

매우 구체적인 데이터 처리 체인을 만들어야합니다. io 스케줄러에서 Retrofit 호출을 수행 한 다음 사용자 정의 단일 스레드 realm 스케줄러에서 제공된 데이터를 처리 한 다음 mainThread 스케줄러에서 결과를 내 UI로 푸시해야합니다. 나는 observeOnsubscribeOn의 여러 조합을 사용하여이 작업을 시도했지만 realm sheduler에서 실행할 중간 부분을 가져올 수 없습니다.

내 목표는 내가 각각의 관찰 일이 특정 스레드에서 수행 관찰 가능한, 같은 체인을 만들 수있는 방법이 scheduler: io ---------------> realm -----------------> mainthread action : retrofit call-----> database update -------> ui update

같은 것입니다?

는 당신에게 Observable.observeOn(...) 방법에

답변

3

봐 주셔서 감사합니다. 이 메서드는 제공된 Scheduler에서 발생하는 모든 작업을 확인합니다.

사용자 정의 "영역"스케줄러를 지원하려면 RxJava가 작업을 예약 할 수있는 방법을 제공해야합니다. Executor (Executors.newSingleThreadExecutor()과 같이 Realm의 단일 스레드 정책을 지원하는 경우) Schedulers.from(Executor)을 사용하여 특정 Executor에서 실행될 스케줄러를 만들 수 있습니다.

ExecutorService realm = Executors.newSingleThreadExecutor(); 
Scheduler realmScheduler = Schedulers.from(realm); 
Retrofit source; 

source.call() 
     .subscribeOn(Schedulers.io()) 
     .observeOn(realmScheduler) 
     .map(DataBaseUpdate) 
     .observeOn(AndroidSchedulers.mainThread()) 
     .subscribe(UIUpdate) 
+0

예. 감사합니다. 추가 읽기시 마침내 효과적으로 여러 스레드에서 이러한 모든 작업을 작성하는 방법을 이해 – semtexzv

+0

'observeOn (realm) '이 아닌'observeOn (realmScheduler)'이어야합니다. –

+0

실제로 조정했습니다. – Kiskae

관련 문제