RxJava의 기본에 대해서

Android Chen·2021년 12월 31일
0

RxJava

  • RxJava란 반응형 프로그래밍이다. 주변환경과 끊임없이 상호작용하는 프로그래밍 방식이며 환경이 변하면 이벤트를 받아 동작하도록 만드는 프로그래밍 기법이다. 간단한 예시를 통해 명령형 프로그래밍과의 차이를 정리한다.

명령형 예시

    1. 1~4까지의 Integer자료형의 데이터를 ArrayList에 추가한다.
    1. 짝수만을 출력한다.
    1. 5~8까지의 수를 ArrayList에 추가한다.
  • 이 과정으로 출력된 결과값은 2와 4이다. 그렇다면 반응형 프로그래밍인 RxJava를 사용할 경우 어떻게 이루어지는지 확인한다.

반응형 예시

  • PublishSubject라는 Observable형태의 자료형을 사용하여 구현한 반응형 프로그래밍의 예시이다. 이 결과로 출력된 값은 6과 8이다.

  • 즉 Observable이라는 것이 이벤트를 받아들이고, 이를 관찰하는 Observer가 존재하는 형태이다. 위의 예시에서는 Int값을 받아들이는 items_rx 라는 Observable이 존재하고 이를 관찰하여 어떠한행동을하는 Observer가 존재하는데, 이 옵저버의 역할을 println으로 지정한 것이다. 이를 Observer가 Observable을 구독한다고 표현하며 Observable.subsribe(Observer)와 같은 형태라고 생각하면 된다.

RxJava의 사용이유?

  • 대부분의 사용자들은 앱이 사용자의 요청에 즉시 반응하여 해결되기를 원하며 반응성이 느린 앱은 선호하지 않는다. RxJava는 이러한 작업을 쉽게 해결할 수 있으며 RxJava를 사용하여 구성된 프로그램에 새로운 프로세스가 추가되어야 하는 경우, 큰 리팩토링 없이 쉽게 변경사항을 구현할 수 있다.

마블 다이어그램

  • RxJava는 흔히 마블 다이어그램을 사용하여 표현한다.

Observable

  • Observable은 크게 3가지 이벤트를 사용하여 동작한다.
  1. onNext() : 하나의 Observable에서 Observer까지 한번에 하나씩 순차적으로 데이터를 발행한다.
  2. onComplete() : 데이터 발행이 끝났음을 알리는 완료 이벤트로 이것이 호출되면 더이상 onNext()가 발생하지 않음을 알리는 것이다.
  3. onError() : 오류가 발생했음을 Observer에게 알린다.
  • 이러한 세가지 이벤트 메소드는 Emitter라는 인터페이스에 선언된다. 아래는 옵저버블을 직접 생성하는 예시를 보여준다.

  • 예를들어 아래와 같이 순서를 바꾼다면 2는 옵저버에게 전달되지 않는다.

just 연산자

  • 해당 아이템을 그대로 발행하는 Observable을 생성한다.

자료구조를 Observable로 변환하기

  1. fromArray()
  • 배열 자료형을 Observable자료형으로 변환한다. 간단하게 Observable.fromArray(배열)과 같은 형태로 변환할 수 있다.
  1. fromIterable()
  • ArrayList, HashSet과 같은 Iterable을 구현한 자료구조 클래스는
    Observable.fromIterable()로 변환할 수 있다.

ㅁ 그외에도 fromFuture, fromPublisher, fromCallable등이 있다.

profile
https://github.com/Userz1-redd

0개의 댓글