티스토리 뷰

안녕하세요. 오늘은 RxJava의 두 번째 시간으로 Observable에 대해 알아보겠습니다.
Observable은 데이터의 흐름을 관장하는 클래스로써 RxJava에서는 Observable이 절대 빠질 수 없습니다.

Observable은 데이터의 흐름에 맞게 알림을 보내 구독자가 데이터 처리를 할 수 있도록 만듭니다.
Observable은 세 가지의 알림을 구독자에게 전달하며 그 종류는 아래와 같습니다.

알림의 종류

  1. onNext : 데이터의 발행을 알립니다.
  2. onComplete : 모든 데이터의 발행이 완료되었음을 알립니다. 이 후 모든 구독은 끝나게 됩니다.
  3. onError : 데이터의 흐름 중에 에러가 발생했음을 알립니다. 이 후 Observable의 동작은 끝납니다.

이제 Observable의 다양한 함수들을 알아보겠습니다.

just()함수

Observable을 통해 데이터를 발행하는 가장 쉬운 방법은 기존의 자료구조를 이용하는 것입니다.
just() 함수는 인자로 넣은 데이터를 차례로 발행하는 Observable을 생성합니다.
타입이 같은 데이터를 최소 1개 최대 10개까지 넣을 수 있습니다.

subscribe() 함수

subscribe()은 Observable 즉 데이터의 흐름을 구독한다는 뜻입니다.
subscribe에서는 onNext, onComplete, onError의 알림에 대한 리스너를 설정하고
데이터의 흐름에서 일어나는 3개의 이벤트에 대한 로직을 실행하도록 만듭니다.

// subscribe의 종류
fun subscribe(): Disposable
fun subscribe(onNext: Consumer<? super T>): Disposable
fun subscribe(onNext: Consumer<? super T>,
              onError: Consumer<? super Throwable>): Disposable
fun subscribe(onNext: Consumer<? super T>,
              onError: Consumer<? super Throwable>,
              onComplete: Action): Disposable

subscribe의 원형은 다음과 같이 4개로 각각 다음과 같은 의미가 있습니다.

  • 인자가 없는 subscribe는 onError의 이벤트의 발생에 따라 Exception을 던집니다. 코드를 테스트하거나 디버깅을 위해 사용합니다. (onNext, onComplete 무시)
  • 인자가 1개 있는 subscribe는 onNext 이벤트만을 처리합니다.
  • 인자가 2개인 subscribe는 onNext와 onError 이벤트를 처리합니다.
  • 인자가 3개인 subscribe는 onNext, onError, onComplete 이벤트 모두를 처리합니다.

Disposable

subscribe는 모두 Disposable 인터페이스 객체를 리턴하며 Disposable을 통해 데이터의 흐름을 중단할 수 있습니다.

fun dispose() // 데이터의 발행을 중단시킵니다.
fun isDisposed() // 데이터의 발행이 중단되었는지 확인합니다.

Observable에서 onComplete가 실행되면 자동으로 dispose()를 호출하여 구독을 종료시킵니다.

오늘은 just와 subscribe, disposable에 대해 알아보았습니다.
이해가 되시나요? 질문이나 오류사항들은 댓글에 남겨 주시면 확인후 답변 드리겠습니다.
(물론 모든 것을 답변 드리지는.... 죄송합니다.)

감사합니다!!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday