오늘은 RxAndroid의 Hot Observable과 Cold Observable에 대해서 정리해 보겠습니다.
Hot하고 Cold하다는 것이, 어떤 면에서 차이가 있는지 알아보고,
Cold Observable을 사용하는 Operator도 정리해보겠습니다.
참고로, RxAndroid의 기본적인 사항에 대한 것은 아래 글을 참조해주세요.
먼저 HotObservable에 대해서 정리해 볼께요.
1. Hot Observable
Observable은 데이터의 Stream이라고 했었는데요.
뭐가 Hot하다는 걸까요?
(데이터를 데울수 있는 것도 아니고 말이지요;;;)
여기서 Hot하다는 것은,
Observable을 생성하자마자 아이템 들을 흘려내보낸다는 것입니다.
그래서, Observable을 생성하고, 일정시간이 지난 상태에서 subscribe하게 된다면,
처음부터 아이템을 받아보지는 못하고, 중간부터 나온 아이템들부터
subscribe할수 있게 됩니다.
그럼, 이번엔 Cold Observable도 알아보겠습니다.
2. Cold Observable
Hot Observable이 생성되자 마자,
아이템들을 흘려보내는 것이라고 했으니,
Cold Observable은 반대일 텐데요.
바로 흘려보내지는 않고 언제 흘려보낸다는 것일까요?
Subscribe할 때, 아이템들을 흘려보낸다는 것입니다.
이렇게 하면, 놓치는 것 없이,
Observable이 흘려보낸 아이템들을 모두 받아볼 수 있겠네요.
참고로, Connectable이라는 Observable도 있는데요.
이 Observable은 Connect메소드가 호출될 때,
아이템들을 흘려보내준다고 합니다.
(수동이라고 생각할 수 있을 것 같네요)
일반적인 방법이 Hot Observable이라고 할 수 있을 것 같구요.
Cold Observable이라는 개념은 알겠는데,
어떻게 구현하는 것일까요?
이를 구현하는데 필요한 Operator의 대표적인 예로
fromCallable이 있는데요.
이 Operator에 대해서 추가로 정리해 보겠습니다.
3. fromCallable
fromCallable이라는 operator의 이름이 예사롭지가 않습니다.
Callable은 Generic으로 받은, 오브젝트 타입으로 value를 return해주는,Thread에 전달할 작업입니다.
(Callable에 대해서 궁금하시면 옆의 링크를 눌러주세요 >> Callable 과 Runnable 뭐가 다른가요? <<)
소스코드의 설명도 한번 보고 가겠습니다.
observer가 subscribe하기 전까지는 실행을 미루고 있다가,
subscribe하는 순간에 실행하기로 한 function을 실행시킨다고 설명이 되어 있는데요.
방금 위에서 저희가 봤던, Cold Observable의 개념을 구현하도록 되어 있는 거네요.
실제로 구현해보면 다음과 같은데요.
먼저, fromCallable을 이용해서, cold Observable을 생성하구요.
subscribe 해주면, subscribe 한 시점에 call메소드가 호출이 되서 Toast가 실행이 됩니다.
아래와 같이 동작합니다.
'Android 개발 > Room, Realm, Databases' 카테고리의 다른 글
RoomDB 에서 One to Many 관계 구현하기 # 채팅 DB 구현 (0) | 2023.04.07 |
---|---|
Room DB 사용방법 총정리 # Android SQLite (0) | 2023.04.04 |
Room DB 에 DB파일 넣어서 사용하기 # 로컬데이터베이스 SQLite (0) | 2022.11.04 |
Room을 이용해서 Offline Cache 구현하는 방법 정리 #Android (0) | 2020.05.14 |
미리 작성된 Realm 데이터베이스를 앱에 넣어서 사용하기 (0) | 2017.06.19 |
Realm 에서 Thread Error 없이 데이터 조회후 삭제하기 (0) | 2017.03.08 |
Realm 에서 Migration 하는 방법 (0) | 2017.03.01 |
Realm Module 을 이용해서 멀티 Schema 활용하기 (0) | 2017.02.25 |
Android의 Realm 데이터베이스 파일 은 특별한 곳에 있지 않다 (0) | 2017.01.10 |
안드로이드 에서 쓰는 핫한 DB, Realm Part1 (2) | 2016.12.24 |
댓글