본문 바로가기

Rx

RxJava, RxKotlin, RxAndroid 이해하기

728x90

Rx..., Reactive... 란

Reactive Programming : 비동기적 데이터 흐름을 처리하는 프로그래밍 패러다임, 핵심은 모든 데이터의 흐름을 비동기적인 데이터의 Stream으로 간주해 처리하며, Observer 디자인 패턴을 활용해서 비동기 이벤트를 처리하는 것이다, 즉 환경이나 데이터가 변하면 이벤트를 받아 동작하도록 만드는 프로그래밍 기법

ReactiveX : 관찰 가능한(Observable) 스트림을 사용하는 비동기 프로그래밍을 위한 API

RxJava : ReactiveX(Reactive Extensions)를 Java로 구현한 라이브러리

 

RxKotlin : Kotlin을 위한 ReactiveX(Reactive Extensions)

RxAndroid : RxJava를 안드로이드 개발을 쉽게 할 수 있도록 추가, 변형한 라이브러리

fun main() {
    var items = PublishSubject.create<Int>()
    items.onNext(1)
    items.onNext(2)

    items.filter { item: Int -> item % 2 == 0 }
        .subscribe { x: Int? -> println(x) }

    items.onNext(5)
    items.onNext(6)
}

실행결과:

6

Reactive Programming 을 예제를 통해 확인해볼 수 있다.

실행결과로 6이 출력되는 것을 확인할 수 있다. 즉 PublishSubject라는 데이터 스트림에 추가된 값 중에 구독 시점에서 변경된 데이터를 옵저버에 전달하게 되는 것이다.

var items = ReplaySubject.create<Int>()

하지만 구독 시점 이 전의 데이터도 함께 얻고싶다면 ReplaySubject로 변경하여 실행하면 2, 6의 결과를 얻을 수 있게 된다.

RxJava를 이용하면 동시성 문제, 백그라운드 처리 등의 문제들을 편리하게 해결할 수 있도록 해준다.