일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- Python
- Django REST framework
- C
- Django REST Android
- NDK
- livedata
- 코틀린
- 프로그래머스
- Kotlin
- RxAndroid
- dart
- Django REST
- Flutter TextField
- FLUTTER
- Android P
- RxJava
- C++
- C/C++
- UWP
- kodility
- 알고리즘
- mfc
- Android
- android architecture component
- flutter firestore
- android push
- 안드로이드
- 안드로이드 구글맵
- Rxjava2
- Today
- Total
개발하는 두더지
[Java/Android] RxJava2 의 Subject 종류들과 ConnectableObservable 본문
Subject
cold observable 을 hot observable로 바꿔줌. 즉, 구독자가 구독하는 순간 데이터를 발행하는 방식에서 구독자 없이도 데이터를 발행할 수 있도록 만들어줄 수 있다는 말이다. Observable이면서 Observer인 클래스이다.
Subject 종류
AsyncSubject
발행된 데이터중 맨 마지막 데이터만 받는다. 즉, onComplete 되기전 마지막 onNext 값만 처리함.
BehaviorSubject
중간에 들어온 구독자는 다음 발행 데이터 전부터 받는다. onNext("1"), onNext("3") 이후 구독자A가 들어오고, onNext("5")가 실행된다면 구독자A는 3, 5 값을 받는다. 예를들면 학교 수업에 지각했다고 하자. 교수님은 이미 칠판에 수업 내용을 적어놓았고, 늦게들어온 학생은 현재 칠판에 써져있는 내용부터 볼 수 있다.
PublishSubject
구독자는 다음 발행 데이터부터 받는다. onNext("1"), onNext("3") 이후 구독자A가 들어오고, onNext("5")가 실행된다면 구독자A는 5 값을 받는다.
ReplaySubject
구독자는 언제 구독하던 처음부터 데이터를 받는다. 테이프로 전체 내용을 녹음해두었다가 구독시작하는 구독자에게 내용을 들려주는 것과 같다.
ConnectableObservable
기존 Observable과 다르게 subscribe 할 때 데이터를 발행하지 않고 connect를 할 때 그때까지 구독한 모든 구독자들에게 데이터 발행을 시작한다.
PublishSubject 처럼 구독자는 구독 이후 다음 발행 데이터부터 받는다.
참고
'Java,Android' 카테고리의 다른 글
[Android, Gradle] Android Studio에서 여러개의 Jar 파일을 하나의 Jar 파일로 만들기 (0) | 2018.05.15 |
---|---|
[Android] Ripple Effect 란? (0) | 2018.05.08 |
[Java/Android] RxJava2 의 Cold Observable 과 Hot Observable (0) | 2018.04.27 |
[Java/Android] Java8 Lambda 사용법 (0) | 2018.04.27 |
[Android] android.app.Application cannot be cast to xxxx (0) | 2018.04.25 |