ReactiveX
-
RxLifecycle 라이브러리ReactiveX 2021. 8. 22. 11:50
이 라이브러리는 불완전한 구독으로 인해 메모리 누수가 발생할 수있는 Android에서 유용하며 안드로이드의 라이프 사이클에 맞게 Observable을 관리할 수 있는 Components를 제공한다. 설정 app/build.gradle 파일에 종속 항목을 추가 // If you want pre-written Activities and Fragments you can subclass as providers implementation 'com.trello.rxlifecycle4:rxlifecycle-components:4.0.2' // If you want pre-written support preference Fragments you can subclass as providers implementation ..
-
RxPermissions, RxBinding 라이브러리ReactiveX 2021. 8. 17. 20:33
1. RxPermissions Library RxJava에서 제공하는 Android 런타임 권한 라이브러리(Beta 버전) Dependencies allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.tbruyelle:rxpermissions:0.12' } 사용법(Kotlin) val rxPermissions = RxPermissions(this) // where this is an Activity or Fragment instance Frament에서 RxPermissions를 사용하는 경우 RxPermissions (fragment.getActivity..
-
SubjectReactiveX 2021. 5. 15. 06:54
Subject는 Observable의 속성과 Observer의 속성을 모두 가지고 있다. 즉 데이터를 발행할 수도 있고, 데이터를 받아서 처리할 수도 있다. AysncSubject AsyncSubject는 Observable로부터 발행된 마지막 값(만)을 발행하고 Observable의 동작이 완료된 후에야 동작한다. (만약, Observable이 아무 값도 발행하지 않으면 AsyncSubject 역시 아무 값도 발행하지 않는다.) AsyncSubject는 맨 마지막 값을 뒤 이어 오는 Observer에 전달하는데, 만약 Observable이 오류로 인해 종료될 경우 AsyncSubject는 아무 항목도 발행하지 않고 발생한 오류를 그대로 전달한다. fun main(){ val observable = Ob..
-
RxAndroidReactiveX 2021. 5. 2. 16:01
RxJava에 최소한의 클래스를 추가하여 Android Application에서 쉽고 간편하게 사용하게 만든 라이브러리이다. 안드로이드에서 사용할 수 있는 Reactive API 및 라이브러리 목록은 https://github.com/Reactivex/Rxandroid/wiki 에서 확인할 수 있다. 환경 설정 allprojects { repositories { maven { url "https://oss.jfrog.org/libs-snapshot" } } } dependencies { implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' // Because RxAndroid releases are few and far between, it is recommen..
-
[RxJava] SchedulerReactiveX 2021. 5. 1. 10:49
스케줄러 개념 스케줄러는 Observable만큼이나 중요한 RxJava의 핵심요소이다. Observable 연산자 체인에 멀티스레딩을 적용하고 싶다면, 특정 스케줄러를 사용해서 연산자(또는 특정 Observable)를 실행하면 된다. SubscribeOn 연산자는 다른 스케줄러를 지정해서 Observable이 처리해야 할 연산자들을 실행시킨다. ObserveOn 연산자는 Observable이 옵저버에게 알림을 보낼때 사용할 스케줄러를 명시한다. 스케줄러를 별로도 지정하지 않으면 main 스레드에서 동작을 실행한다. 아래 그림이 보여주듯, SubscribeOn 연산자는 Observable이 연산을 위해 사용할 스레드를 지정하며, 연산자 체인 중 아무 곳에서 호출해도 문제되지 않는다. 하지만, Observe..
-
[RxJava] Single, MaybeReactiveX 2021. 5. 1. 10:14
Single Single은 Obvservable의 한 형태이지만, 항상 한 가지 값 또는 오류 알림 둘 중 하나만 배출한다. Single을 구독할 때는 Observable을 구독할 때 사용하는 세 개의 메서드(onNext, onError, onCompleted) 대신 다음의 두 메서드만 사용할 수 있다. onSuccess - Single은 자신이 배출하는 하나의 값을 이 메서드를 통해 전달한다. onError - Single은 항목을 배출할 수 없을 때 이 메서드를 통해 Throwable 객체를 전달한다. Single은 발행과 동시에 종료하며 종료시 onSuccess가 호출된다. Observable과 마찬가지로, Single도 다양한 연산자들을 제공한다. 이 중 어떤 연산자들은 Observable과 Si..
-
[RxJava] Operators(연산자)ReactiveX 2021. 4. 30. 11:15
ReactiveX를 지원하는 언어별 구현체들은 다양한 연산자들을 제공하는데, 이 중에는 공통적으로 제공되는 연산자도 있지만 반대로 특정 구현체에서만 제공하는 연산자들도 존재한다. 연산자 체인 거의 모든 연산자들은 Observable 상에서 동작하고 Observable을 리턴한다. 연산자 체인에서 각각의 연산자는 이전 연산자가 리턴한 Observable을 기반으로 동작하며 동작에 따라 Observable을 변경한다. 먼저 실행된 연산자가 리턴한 Observable을 기반으로 다음 연산자가 동작하기 때문에 Observable의 연산자 체인은 원본 Observable과 독립적으로 실행될 수 없고 순서대로 실행되어야 한다. 카테고리별 연산자 Observable 생성 - 새로운 Observable을 만드는 연산자..
-
[RxJava] ObservableReactiveX 2021. 4. 29. 16:37
Observable ReactiveX에서는 Observable을 구독하는 Observer가 존재하고, Observable이 이벤트를 발생시키면 Observer의 관찰자가 그 순간을 감지하고 준비된 연산을 실행시켜 결과를 리턴하는 메커니즘 때문에, observable을 구독한다라고 표현한다. Subscribe 메서드를 통해 Observer와 Observable을 연결한다. Observable은 다음의 3가지 이벤트를 사용하여 동작한다. onNext Observable은 새로운 항목들을 배출할 때마다 이 메서드를 호출한다. 이 메서드는 Observable이 배출하는 항목을 파라미터로 전달 받는다. onError Observable은 기대하는 데이터가 생성되지 않았거나 다른 이유로 오류가 발생할 경우 이 메서..