ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] RxJava
    Android 2021. 8. 28. 10:39
    728x90

    ReactiveX

    ReactiveX는 Observer 패턴과 함수형 프로그래밍을 사용하여 비동기 프로그래밍을 가능케 한다.

    관찰 가능한 1) Observable stream 이 있고, 2) operator 순수함수로 가공을 하여 발행하면 3) Observer가 반응해 작업을 실행한다.

     

    1. RxJava: Java(JVM)를 위한 ReactiveX Extensions. Reactive programming(리액티브 프로그래밍) 패러다임을 자바에서 구현한 프로그래밍 라이브러리
    2. RxKotlin: Kotlin을 위한 ReactiveX Extensions. RxJava 라이브러리를 기반으로 포팅하여 코틀린을 위한 리액티브 프로그래밍의 특정 부분을 함수형 프로그래밍으로써 구현한 라이브러리
    3. RxAndroid: Android를 위한 ReactiveX Extensions. RxJava에 최소한의 클래스를 추가하여 안드로이드 앱에서 리액티브 구성요소를 쉽고 간편하게 사용하게 만드는 라이브러리
    4. 장점
      • 효율적으로 신속하게 비동기 처리를 도와줌
      • 함수형 프로그래밍을 일부 지원함
      • 옵저버패턴(Observer pattern)을 사용함
      • 콜백(Callback)에서 또 콜백을 하는 콜백 지옥에서 벗어날 수 있다.
    5. 단점
      • 러닝커브가 가파르기 때문에 진입장벽 높다

     

    Observable

    Observable은 데이터 흐름에 맞게 알림을 보내 Observer가 데이터를 사용할 수 있도록 한다. 즉, Observable을 이용해 데이터를 회수하고 변환하는 메커니즘을 정의하고, Observer는 이를 구독해 데이터가 준비되면 이에 반응한다.

     

    1. Observable이 데이터 스트림을 처리하고, 완료되면 데이터를 발행(emit)한다.
    2. 데이터를 발행할 때마다 구독하고 있는 모든 Observer가 알림을 받는다.
    3. Observer는 수신한 데이터를 가지고 어떠한 일을 한다.

    ※ 스트림 : 2021.08.28 - [JAVA] - [Java 8] Stream

     

    Observable 외에도 총 5가지의 클래스가 있다

     

    1. Observable
    2. Single
    3. Maybe
    4. Completable
    5. Flowable

     

    Disposable

    • subscribe()를 호출한 후에는 Disposable 객체가 반환된다.
    • Observable이 발행하는 아이템의 개수가 정해져 있다면 모두 발행된 이후 onComplete()가 호출되고 안전하게 종료될 것이다. 하지만 아이템을 무한히 발행하거나 오랫동안 실행되는 Observable의 경우에는 제대로 종료해주지 않는다면 메모리 릭이 발생할 수 있다.
    • 더 이상 옵저버블의 구독이 필요하지 않을 때에는 이를 폐기(dispose)하는 것이 효율적이다. Disposable.dispose()를 호출해서 언제든지 아이템의 발행을 중단할 수 있다.

     

     

    참고

     

    728x90
Designed by Tistory.