rx-java
Android with RxJava
수색…
비고
RxAndroid는 많은 기능을 갖춘 라이브러리였습니다. 여러 다른 라이브러리에서 버전 0.25.0에서 1.x로 옮겨졌습니다.
RxAndroid - AndroidSchedulers
이것은 말 그대로 Android에서 RxJava를 사용하여 시작해야하는 유일한 것입니다.
귀하의 gradle 종속성에 RxJava 및 RxAndroid 포함 :
// use the last version
compile 'io.reactivex.rxjava2:rxjava:2.1.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
RxJava에 RxAndroid 주요 추가는 안드로이드 메인 스레드 또는 UI 스레드에 대한 스케줄러입니다.
귀하의 코드에서 :
Observable.just("one", "two", "three", "four", "five")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
data -> doStuffOnMainThread(),
error -> handleErrorOnMainThread()
)
또는 사용자 정의 Looper 대한 스케줄러를 작성할 수 있습니다.
Looper backgroundLooper = // ...
Observable.just("one", "two", "three", "four", "five")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.from(backgroundLooper))
.subscribe(
data -> doStuffOnMainThread(),
error -> handleErrorOnMainThread()
)
대부분의 경우 표준 RxJava 문서를 참조 할 수 있습니다.
RxLifecycle 구성 요소
RxLifecycle 라이브러리는 관찰 가능한 구독을 Android 활동 및 프래그먼트 수명주기에 쉽게 바인딩합니다.
Observable 구독을 잊어 버리면 메모리 누수가 발생하고 시스템에서 파손 된 활동 / 조각 살아있는 이벤트를 유지할 수 있습니다.
라이브러리를 종속성에 추가합니다.
// use the last version available
compile 'com.trello:rxlifecycle:0.6.1'
compile 'com.trello:rxlifecycle-components:0.6.1'
그런 다음 Rx* 클래스를 확장합니다.
-
RxActivity/support.RxFragmentActivity/support.RxAppCompatActivity -
RxFragment/support.RxFragment -
RxDialogFragment/support.RxDialogFragment -
support.RxAppCompatDialogActivity
당신은 Observable을 구독 할 때 모두 설정할 수 있습니다 :
someObservable
.compose(bindToLifecycle())
.subscribe();
액티비티의 onCreate() 메소드에서 이것을 실행하면 onDestroy() 에서 자동으로 탈퇴됩니다.
같은 일이 일어난다 :
-
onStart()->onStop() -
onResume()->onPause() -
onAttach()->onDetach()(단편 전용) -
onViewCreated()->onDestroyView()(단편 전용)
다른 방법으로 탈퇴를 원할 때 이벤트를 지정할 수 있습니다.
활동에서 :
someObservable
.compose(bindUntilEvent(ActivityEvent.DESTROY))
.subscribe();
조각에서 :
someObservable
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe();
라이프 사이클 이벤트를 직접 수신 대기 (lifecycle lifecycle() 하기 위해 lifecycle() 메소드를 사용하여 관찰 가능한 라이프 사이클을 얻을 수도 있습니다.
RxLifecycle은 수명주기를 관찰 할 수 있도록 직접 전달하는 데에도 사용할 수 있습니다.
.compose(RxLifecycleAndroid.bindActivity(lifecycle))
Single 또는 Completable 을 처리해야하는 경우 bind 메소드 다음에 forSingle() 또는 forCompletable 을 각각 추가하면됩니다.
someSingle
.compose(bindToLifecycle().forSingle())
.subscribe();
Navi 라이브러리에서도 사용할 수 있습니다.
Rxpermissions
이 라이브러리는 새로운 Android M 권한 모델과 함께 RxJava를 사용할 수있게합니다.
라이브러리를 종속성에 추가합니다.
Rxjava
dependencies {
compile 'com.tbruyelle.rxpermissions:rxpermissions:0.8.0@aar'
}
Rxjava2
dependencies {
compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.8.1@aar'
}
용법
예 (간결함을 위해 Retrolambda가 있지만 필수는 아님) :
// Must be done during an initialization phase like onCreate
RxPermissions.getInstance(this)
.request(Manifest.permission.CAMERA)
.subscribe(granted -> {
if (granted) { // Always true pre-M
// I can control the camera now
} else {
// Oups permission denied
}
});
더 읽기 : https://github.com/tbruyelle/RxPermissions .