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 |
Tags
- 이펙티브코틀린
- 안드로이드
- 잡담
- RxKotiln
- 안드로이드 개발자
- Kotlin
- android compose
- 이펙티브 코틀린
- Firebase
- 코틀린
- 코딩테스트
- Rxjava 안드로이드
- 안드로이드 다이얼로그
- MVVM
- Swift 문법
- Flutter
- 안드로이드 컴포즈
- react
- 개발자
- 안드로이드 클린아키텍쳐
- Go언어
- 알고리즘
- Java
- android
- Dev6
- 반응형 프로그래밍
- Kotiln
- 프로그래머스
- RxJava
- 코루틴
Archives
- Today
- Total
최데브는 오늘도 프로그래밍을 한다.
RxJava - Hot Observable , Cold Observable 본문
이전에 쓴 글(아래 링크 참고) 에서 뒷쪽에
https://choi-dev.tistory.com/107?category=972011
Subject 에 대한 이야기가 나온다.
그때는 간단하게 설명하고 지나갔는데 공부하던중 추가로 알게 된 내용이 있어서 포스팅한다.
먼저 이 이야기를 시작하려면 제목의 Hot Observable , Cold Observable 에 대해서 알고 넘어가야한다.
(사실 이 이야기가 이 글의 핵심인건 맞다.)
Cold Observable
- Observable을 선언하고 just() 함수를 호출해도 옵서버가 subscribe() 함수를 호출하여 구독하지 않으면 데이터를 발행하지 않는다. ==> 게으른 접근법
- 예시) 웹 요청, 데이터베이스 쿼리와 읽기 등 / 내가 원하는 URL이나 데이터를 지정하면 그때부터 서버나 데이터베이스에 요청을 보내고 결과를 받아옴
- 구독자가 구독하면 준비된 데이터를 처음부터 발행.
- retrofit2 과 연동해서 사용해서 http 통신으로 데이터를 받아왔을때도 보통 이런 상황이다.
Hot Observable
- 구독자가 존재 여부와 관계없이 데이터를 발행함. => 여러 구독자를 고려할 수 있다.
- 단, 구독자로서는 Observable에서 발행하는 데이터를 모두 수신할 것으로 보장할 수 없다.
- 구독한 시점부터 Observable에서 발행한 값을 받는다.
- 예시) 마우스 이벤트, 키보드 이벤트, 시스템 이벤트, 센서 데이터, 주식 가격 등
- 주의할점 ) 배압을 고려해야 함.
- 배압은 Observable에서 데이터를 발행하는 속도와 구독자가 처리하는 속도의 차이가 클 때 발생
- Flowable이라는 특화 클래스에서 배압을 처리
- 안드로이드를 예를 들면 브로드캐스트 메시지를 글로벌하게 전송한다고 생각을 하면 된다. 만약에 첫번째 구독자가 Observable을 구독하고, 몇 초 뒤에 두 번째 구독자가 똑같은 Observable을 구독한다고 가정하면 이 둘은 같은 아이템을 동시에 수신을 하지만, 두 번째 구독자는 구독하기 전에 발행된 아이템을 놓칠 수도 있다.
Cold -> Hot 으로는 변경이 가능한데 이를 가능하게 하는게 Subject 클래스다.
사실 변경을 시켜주는거라고 하기보단 둘다 될 수 있다는 표현이 더 적당한 것 같다.
반응형
'Android > RxJava, RxKotlin' 카테고리의 다른 글
RxJava - subscribeOn, observeOn 를 제대로 쓰고 있는걸까? (0) | 2021.10.20 |
---|---|
RxJava를 Event Bus 처럼 쓰기 (0) | 2021.10.05 |
RxJava - Observable과 Observer 의 차이 (0) | 2021.06.12 |
RxJava - Observable을 제외한 다른 생산자들 (0) | 2021.06.12 |
RxJava - 시작하기 (0) | 2021.06.12 |
RxJava , RxKotiln 이란? (0) | 2021.06.08 |
Comments