일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Android
- 테스트의 장점
- 디자인패턴
- UnitTest
- Kotlin
- 단위테스트
- 안드로이드
- 안정성
- Python
- Room
- 유닛테스트
- rxjava
- MVVM
- 제한함수
- 공격적 프로그래밍
- 컴포즈
- 코딩테스트
- 안드로이드 디자인패턴
- mock
- git
- 파이썬
- dagger2
- 코틀린
- Jetpack
- ViewModel
- compose
- 깃
- 자료구조
- Observable
- Di
- Today
- Total
세상을 바꾸는 개발자
[RxJava] Observerble 이란? 본문
안녕하세요~ 헬창코딩입니다.
오늘은 Observerble에 대해서 알아보도록 하겠습니다~
RxJava에서는 Obseverble을 구독(subscribe)하는 Observer가 존재하고, Observable이 순차적으로 발행하는 데이터에 대해서 반응합니다. 이때 Observable은 다음과 같이 3가지 이벤트를 사요하여 동작합니다.!
onNext() : 하나의 소스 Observable에서 Observer까지 한 번에 하나씩 순차적으로 데이터를 발행합니다.
onComplete() : 데이터 발행이 끝났음을 알리는 완료 이벤트를 Observer에 전달하여 더는 onNext() 호출이 발생하지 않음을 나타냅니다.
onError() : 오류가 발생했음을 Observer에 전달합니다.
이 세 가지 이벤트 메서드들은 Emitter라는 인터페이스에 선언됩니다. 데이터 및 오류 내용을 발행할 때 null을 발핼 할 수 없음을 주의해야 합니다.
RxJava에서는 수백 개의 연산자를 제공하지만 안드로이드에서 많이 사용하는 몇 가지 연산자들에 대해서만 알아보도록 할게요~
Observerble을 한번 만들어 보도록 하겠습니다!
emitter를 통해 문자열 "healchang"와 "coding"을 발행했습니다.
Observer을 구독하도록 subscribe() 메서드를 호출하여 Observer 또는 Consumer를 추가할 수 있습니다.
아이템의 발행이 끝났다면 반드시 onComplete()를 호출해야 합니다.
onComplete() 호출 후에는 아이템이 추가로 발행하더라도
구독자는 데이터를 통지받지 못합니다.
만약 오류가 발생했을 때는 Emitter를 통해 onError를 호출해야 하며, 구독자는 이를 적절히 처리해야 합니다.
간단한 Observable 객체 생성을 통해 아이템을 발행하고 구독하는 예제를 살펴보았습니다.
하지만 실제로는 create() 연산자는 개발자가 직접 Emitter를 제어하므로 주의하여 사용해야 합니다.
예를 들어 Observable이 페기 되었을 대 등록된 콜백을 모두 해제하지 않으면 메모리 누수가 발생하고,
BackPressure를 직접 처리해야 합니다.
오늘은 Observable의 기본적인 사용방법에 대해서 알아봤는데 다음 시간에는
just() 연산자, fromArray() 연산자 등등 다양한 연사자들에 대해서 알아보도록 하겠습니다.
'안드로이드 > RxJava' 카테고리의 다른 글
[RxJava] 다양한 Observable의 형태 ( Maybe ) (0) | 2021.08.24 |
---|---|
[RxJava] 다양한 Observable의 형태 ( Single ) (0) | 2021.08.24 |
[RxJava] Observable로 변환하기(fromArray, fromIterable, fromFuture, fromPublisher, fromCallable) (0) | 2021.08.23 |
[RxJava] just() 연산자 (0) | 2021.08.23 |
[RxJava] 명령형 프로그래밍과 반응형 프로그래밍의 차이 (0) | 2021.08.12 |