수색…


비고

RxAndroid는 많은 기능을 갖춘 라이브러리였습니다. 여러 다른 라이브러리에서 버전 0.25.0에서 1.x로 옮겨졌습니다.

1.0 이전에 사용 가능한 기능을 구현하는 라이브러리 목록은 여기에서 유지 관리 됩니다 .

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 .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow