본문 바로가기
안드로이드/RxJava

Observable에 관해서..

by 안드뽀개기 2021. 6. 8.
반응형

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