본문 바로가기

프로그래밍/RxJava

(5)
[RxJava] Subject 클래스 - 구독과 해지 : Observable 을 subscribe() 하여 구독하고 dispose() 하여 구독을 해지한다. Observable 이 complete() 를 보냈을때 dispose() 를 호출해 자동으로 구독 관계를 끊는다. - 차가운 Observable : 차가운 Observable 은 subscribe() 함수를 호출하여 구독하지 않는 이상 데이터를 발행하지 않는다. subscribe() 호출 즉시 준비된 데이터를 처음부터 발행한다. - 뜨거운 Observable : 구독자 존재 여부와 관계없이 데이터를 발행한다. 또 여러 구독자가 있을 수 있다. 단, 구독자가 Observable 에서 발행하는 데이터를 처음부터 수신하는 것을 보장하지 않고, subscribe() 시점부터 그 이후에 발행한 ..
[RxJava-4] 연산자 (Operator) RxJava 는 just(), fromArray() 와 같은 팩토리 함수를 사용해 Observable 을 생성하고, 연산자(Operator)를 사용하여 데이터를 처리합니다. 팩토리 함수와 연산자를 함께 사용하는 방법을 메서드 체이닝(Method Chaining)이라 하고, 여러 연산자를 잘 사용하면 복잡한 비동기 호출도 간결하게 처리할 수 있습니다. 연산자를 잘 사용하기 위해서는 어떤 연산자가 있는지 알아야 합니다. 하지만, 모든 연산자를 다 외울 필요는 없습니다. 대략 이런 기능이 있다는 것만 알고 필요할 때, 책이나 docs 에서 찾아서 적용하면 됩니다. 연산자에는 크게 생성 연산자, 변환 연산자, 결합 연산자, 조건 연산자, 수학 연산자가 있습니다. 각각 이름 그대로 Observable 을 생성/변..
[RxJava-3] 데이터 발행자(Data Source) : Observable 과 Single, Maybe, Completable Observable 과 비슷한 데이터 소스에는 Single, Maybe, Completable 이 있습니다. Flowable 이라는 것도 있지만 그건 나중에 알아보도록 할겠습니다. Observable 이라는 데이터 소스를 구독했을 경우 구독을 해지하기 전까지는 Observable 발행하는 모든 데이터를 받을 수 있습니다. 하지만 안드로이드에서 주로 사용하는 API 통신의 경우 단발성 소통이 대부분이고, 이런 것에서 Observable 을 사용한다면 자원이 낭비됩니다. 이때 효율적으로 한번 데이터를 받으면 자동으로 구독해지, 종료시키는 데이터 소스가 Single, Maybe, Completable 입니다. Observable 은 데이터가 발행되면 3가지 형태로 데이터를 받습니다. public interfa..
[RxJava-2] Observable 에 대하여 RxJava 를 처음 시작하는데 장벽이 높은 이유 중에 하나는 이해해야 할 단어들이 많기 때문이라고 생각합니다. 비동기 프로그래밍을 공부하고 싶어서 RxJava 를 검색하면 어떤 책이든 블로그든 Observable, Operator 등 새로운 개념들이 쏟아집니다. 하나식 알아가 볼까요? [RxJava-1] 에서 ReactiveX 를 관찰 가능한(observable) 비동기적인 데이터 흐름(stream)을 함수 형태로 프로그래밍하는 API 이라고 했습니다. Observable(옵저버블) 은 단어 뜻 그대로 관찰 가능한 것입니다. RxJava는 Observable(옵저버블)을 사용해 데이터 흐름을 만들고, Observer(관찰자)가 이 Observable 을 관찰하고 있다가, 데이터가 전달되면 그 데이터를 ..
[RxJava-1] Reactive Programming 과 ReactiveX 그리고 RxJava Reactive Programming, ReactiveX, RxJava 이 무엇인지 알아보고, 무엇이 다른지 이해해보겠습니다. Reactive Programming (리액티브 프로그래밍) 은 데이터의 흐름(stream)과 전달에 관한 프로그래밍 패러다임입니다. 패러다임이란, 사람들의 견해나 사고를 규정하는 인식 체계를 말합니다. 저는 패러다임을 어떤 것을 알아가고 인식하는 관점이라고 이해했습니다. 그렇다면, 프로그래밍 패러다임은 프로그래밍을 인식하는 방식이나 방향이라고 할 수 있겠네요. 예를 들어, 객체지향 프로그래밍은 코드를 객체들의 집합으로 구분해서 코드를 인식하는 방식이고, 함수형 프로그래밍은 코드를 순수 함수로 구분하여 프로그래밍하는 방식입니다. 정리하면, 리액티브 프로그래밍은 데이터를 전달하여 ..