Observable
Observable은 데이터의 스트림(흐름)입니다. Observable을 구독하는 Observer가 존재하고, Observable이 순차적으로 발행하는 데이터에 대해서 반응한다.
- onNext() : Observable이 하나씩 순차적으로 데이터를 발행
- onComplete() : 데이터의 발행이 끝났음을 알리는 완료 이벤트. 더는 onNext() 호출이 발생하지 않음
- onError() : 오류가 발생했음을 알림. onError() 이후 onNext()와 onComplete()는 더이상 호출되지 않음
[Observable의 생성]
- create() 연산자
emitter를 이용하여 직접 아이템을 발행하고, 아이템 발행의 완료 및 오류의 알림을 직접 설정할 수 있습니다.
- just() 연산자
해당 아이템을 그대로 발행하는 Observable을 생성한다. 문자열, 정수형 등을 Observable로 변환
- fromArray() 연산자
배열을 Observable로 변환
- fromIterable() 연산자
ArrayList, HashSet 등과 같이 일반적으로 Iterable을 구현한 자료 구조 클래스를 Observable로 변환
- fromPublisher() 연산자
Publisher를 Observable로 변환
-> Publisher는 잠재적인 아이템 발행을 제공하는 생산자로 Subcriber로 부터 요청을 받아 아이템을 발행
- fromCallable() 연산자
비동기적인 실행 결과를 반환한다는 점이 Runnable과 다르다. fromCallable() 연산자를 통해 Callable을 Observable로 변환하고 비동기적으로 아이템을 발행할 수 있다.
- fromFutuer() 연산자
Future을 Observable로 변환, Observable 내부에서 Future.get() 메소드를 호출하고, Futuer의 작업이 끝나기 전까지 스레드는 블로킹된다. 개념 및 사용법이 이해가 안되서 추가적인 공부가 필요해 보입니다..
[Observable의 다른 형태]
- Single
Obervable과 다르게 단 하나의 아이템만을 발행하는 특징을 가지고 있습니다. (서버 API 호출과 같이 단발성 호출에 적합)
- Maybe
Single과 비슷하지만 아이템을 발행하거나 발행하지 않을 수도 있다는 점에서 차이가 있습니다. 아이템을 발행할 때는 onSuccess()로 호출하고, 발행하지 않을 때는 onComplete()로 호출합니다.
- Completable
Completable은 아이템을 발행하지 않고, 단지 정상적인 실행이 종료되었는지에 대해서만 관심을 갖는다. 그러므로 Emitter에서 onNext()나 onSuccess() 같은 메서드는 없고 onComplete()와 onError()만 존재한다.
Completable.create { emitter ->
//do something here
emitter.onComplete()
}.subscribe {
println("completed1")
}
//실행결과 : completed1
'안드로이드 > RxJava' 카테고리의 다른 글
Cold Observable vs Hot Observable (0) | 2023.01.25 |
---|---|
[안드로이드] RxJava - 변환 연산자 (0) | 2022.04.06 |
[안드로이드] RxJava - 생성 연산자 (0) | 2022.04.01 |
[안드로이드] RxJava 연산자 종류 (0) | 2022.03.31 |
RxJava란? (0) | 2021.06.08 |