one stream vs multicast

13
One Stream vs Multicast TossLab 정정정

Upload: seongug-jung

Post on 21-Jan-2017

135 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: One stream vs multicast

One Stream vs MulticastTossLab 정승욱

Page 2: One stream vs multicast

과거상황

Page 3: One stream vs multicast

A B

C D

자료형

AB C D

B 로직수행

UI 갱신

A 로직수행

UI 갱신

C 로직수행

UI 갱신

Page 4: One stream vs multicast

문제상황

Page 5: One stream vs multicast

B 로직수행

UI 갱신

A 로직수행

UI 갱신

C 로직수행

UI 갱신

먼저수행한로직이이전수행로직보다 UI 갱신이늦다면 ?

AB C

Page 6: One stream vs multicast

해결을위한검토 1Multicast 사용

Page 7: One stream vs multicast

onNext

A B C

A-Sub B-Sub C-Sub

Page 8: One stream vs multicast

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

Page 9: One stream vs multicast

해결을위한검토 2Observable 변조

Page 10: One stream vs multicast

onNext

A B C

A-onNext B-onNext C-onNext

ACompose

BCompose

CCompose

concatMap

Subscribe

Page 11: One stream vs multicast

현재상황

Page 12: One stream vs multicast

A1

B3

C5

A2

B4

Stream

B4

A2

B3

A1

실제Consume

C5consume 소요시간A : 1초B : 0.3 초C : 0.1 초

Page 13: One stream vs multicast

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