one stream vs multicast
TRANSCRIPT
One Stream vs MulticastTossLab 정승욱
과거상황
A B
C D
자료형
AB C D
B 로직수행
UI 갱신
A 로직수행
UI 갱신
C 로직수행
UI 갱신
문제상황
B 로직수행
UI 갱신
A 로직수행
UI 갱신
C 로직수행
UI 갱신
먼저수행한로직이이전수행로직보다 UI 갱신이늦다면 ?
AB C
해결을위한검토 1Multicast 사용
onNext
A B C
A-Sub B-Sub C-Sub
onNext
A B C
A-Sub B-Sub C-Sub
문제점
consume1 초소요
consume0.1 초소요
consume0.3 초소요
A1
B3
C5
A2
B4
Stream
B4
A2
B3
A1
실제Consume
C5
해결을위한검토 2Observable 변조
onNext
A B C
A-onNext B-onNext C-onNext
ACompose
BCompose
CCompose
concatMap
Subscribe
현재상황
A1
B3
C5
A2
B4
Stream
B4
A2
B3
A1
실제Consume
C5consume 소요시간A : 1초B : 0.3 초C : 0.1 초
Multicast VS OneStream
로직의순서가상관없다면 Multicast 전략
적용법
Subject또는Observable.publish() -> ConnectableObservable 로변환
로직순서의일관성유지라면 One Stream 전략
데이터에따라다른로직적용법
1. 분기지점에서 concatMap
2. concatMap 내부에서새로운 Observable.just 선언
3. doOnNext 등을사용하여데이터를 consume
https://github.com/gdgand/android-rxjava/tree/master/2016-06-22-OneStream_VS_Multicast/src/main/java/com/gdgand/rxjava/onestreamvsmulticast/command