Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- RX
- Android
- android weekly
- MVP
- 9498
- Android Support Library
- DIABLO4
- Season3
- 안드로이드 리소스
- Connectable Observable Operators
- RXjava
- android resource automation
- AndroidWeek
- 리소스 자동화
- parser
- 구현
- gradle
- 성공
- rxandroid
- logansquare
- Kulle
- ReactiveX
- Observable
- 백준
- 디버그
- retrolambda
- JSON
- 안드로이드
- 분류
Archives
- Today
- Total
안드로이드 개발 팁 블로그
Connectable Observable Operators 본문
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
해당 포스트는 ReactiveX api 공식 문서 번역 정리한 글입니다.
Connectable Observable Operators
ConnectableObservable
의 서브 클레스와 오퍼레이터에 대해서 설명을 하고자 한다.
ConnectableObservable.connect( )
— Connectable Observable에게 아이템 방출을 시작하라고 지시한다.Observable.publish( )
— Observable을 Connectable Observable으로 변형시킨다.Observable.replay( )
— 모든 Observer들에게 방출이 시작된 후에 구독을 했을 경우라도 같은 순서의 방출된 아이템을 볼 수 있도록 보장합니다.ConnectableObservable.refCount( )
— Connectable Observable을 일반적인 Observable처럼 작동하도록 만듭니다.
Connectable Observable은 구독을 하더라도 이템 방출을 시작하지 않는다는 점을 제외하면 일반적인 Observable과 비슷합니다. connect()을 호출했을 때에만 방출합니다. 이 방법으로 Subscriber들에게 Observable가 방출을 시작하기전에 Observable구독하도록 기다릴 수 있습니다.
아래의 예제코드는 같은 Observable을 구독하는 두개의 subscriber를 보여주는 코드입니다. 첫번째 케이스에서는 일반적인 Observable이고 두번째 케이스에서는 Connectable Observable으로 subscriber가 모두 구독한 이후 연결하였습니다. 차이점은 아웃풋을 통해 확인이 가능합니다.
Example #1:
Observable firstMillion = Observable.range( 1, 1000000 ).sample(7, java.util.concurrent.TimeUnit.MILLISECONDS);
firstMillion.subscribe(
{ println("Subscriber #1:" + it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence #1 complete"); } // onCompleted
);
firstMillion.subscribe(
{ println("Subscriber #2:" + it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence #2 complete"); } // onCompleted
);
Subscriber #1:211128
Subscriber #1:411633
Subscriber #1:629605
Subscriber #1:841903
Sequence #1 complete
Subscriber #2:244776
Subscriber #2:431416
Subscriber #2:621647
Subscriber #2:826996
Sequence #2 complete
Example #2:
Observable firstMillion = Observable.range( 1, 1000000 ).sample(7, java.util.concurrent.TimeUnit.MILLISECONDS).publish();
firstMillion.subscribe(
{ println("Subscriber #1:" + it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence #1 complete"); } // onCompleted
);
firstMillion.subscribe(
{ println("Subscriber #2:" + it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence #2 complete"); } // onCompleted
);
firstMillion.connect();
Subscriber #2:208683
Subscriber #1:208683
Subscriber #2:432509
Subscriber #1:432509
Subscriber #2:644270
Subscriber #1:644270
Subscriber #2:887885
Subscriber #1:887885
Sequence #2 complete
Sequence #1 complete
'Rxandroid' 카테고리의 다른 글
3. Operators 이해하기 - 생성 (2) | 2016.03.02 |
---|---|
2. 스케쥴러 이해하기 (1) | 2016.02.23 |
1-1. RxAndroid MVP Sample (1) | 2016.02.19 |
1. RxAndroid를 적용해보고 HelloWorld를 찍어보자. (2) | 2016.02.18 |
0. RxAndroid의 시작 (0) | 2016.02.17 |
Comments