-
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 'com.trello.rxlifecycle4:rxlifecycle-components-preference:4.0.2' // If you want to use Android Lifecycle for providers implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle:4.0.2' // If you want to use Kotlin syntax implementation 'com.trello.rxlifecycle4:rxlifecycle-kotlin:4.0.2' // If you want to use Kotlin syntax with Android Lifecycle implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle-kotlin:4.0.2'
RxLifeCycle Components
Components 설명 RxDialogFragment DialogFragment에 대응한다. RxFragment Fragment에 대응한다. RxAppCompatActivity AppCompatActivity에 대응한다. RxAppCompatDialogFragment AppCompatDialogFragment에 대응한다. RxFragmentActivity FragmentActivity에 대응한다. 기본 사용법
수명 주기 스트림을 나타내는 Observable<T>로 시작해야 한다. 그런 다음 RxLifecycle을 사용하여 시퀀스를 해당 수명 주기에 바인딩한다. 수명 주기가 무엇이든 방출할 때 바인딩할 수 있다.
myObservable .compose(RxLifecycle.bind(lifecycle)) .subscribe();
특정 라이프 사이클 이벤트가 발생할 때
myObservable .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe();
RxLifecycle components를 사용할 경우
public class MyActivity extends RxActivity { @Override public void onResume() { super.onResume(); myObservable .compose(bindToLifecycle()) .subscribe(); } }
rxlifecycle-android-lifecycle을 사용하는 경우
public class MyActivity extends LifecycleActivity { private final LifecycleProvider<Lifecycle.Event> provider = AndroidLifecycle.createLifecycleProvider(this); @Override public void onResume() { super.onResume(); myObservable .compose(provider.bindToLifecycle()) .subscribe(); } }
구독 취소
RxLifecycle은 실제로 시퀀스를 구독 취소하지 않고 대신 시퀀스를 종료한다.
Observable, Flowable, Maybe는 onCompleted() 알림을
Single, Completable onError(CancellationException) 알림을 내보낸다.
Subscription.unsubscribe() 동작이 필요한 경우엔 구독을 직접 수동으로 처리하고 unsubscribe ()를 호출하는 것이 좋다.
rxlifecycle-kotlin 모듈은 기본 RxJava 유형에 대한 내장 확장을 제공한다.
class RxLifecycleActivity : RxAppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... Observable .doOnDispose {} .bindUntilEvent(this, Lifecycle.Event.ON_PAUSE) .subscribe {} } }
References
- https://github.com/trello/RxLifecycle
- 유동환, 박정준, 리액티브 프로그래밍 기초부터 안드로이드까지 한번에, 한빛미디어
'ReactiveX' 카테고리의 다른 글
RxPermissions, RxBinding 라이브러리 (0) 2021.08.17 Subject (0) 2021.05.15 RxAndroid (0) 2021.05.02 [RxJava] Scheduler (0) 2021.05.01 [RxJava] Single, Maybe (0) 2021.05.01