Sök…


Anmärkningar

RxAndroid var tidigare ett bibliotek med många funktioner. Det har delats upp i många olika bibliotek som går från version 0.25.0 till 1.x.

En lista över bibliotek som implementerar de funktioner som finns innan 1.0 bibehålls här .

RxAndroid - AndroidSchedulers

Detta är bokstavligen det enda du behöver för att börja använda RxJava på Android.

Inkludera RxJava och RxAndroid i dina gradberoende:

 // use the last version
compile 'io.reactivex.rxjava2:rxjava:2.1.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'

RxAndroid huvudtillägg till RxJava är en schemaläggare för Android Main Thread eller UI Thread.

I din kod:

Observable.just("one", "two", "three", "four", "five")
        .subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
            data -> doStuffOnMainThread(),
            error -> handleErrorOnMainThread()
        )

Eller så kan du skapa en schemaläggare för en anpassad Looper :

Looper backgroundLooper = // ...
Observable.just("one", "two", "three", "four", "five")
        .subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.from(backgroundLooper))
        .subscribe(
            data -> doStuffOnMainThread(),
            error -> handleErrorOnMainThread()
        )

För de flesta allt annat kan du hänvisa till standard RxJava-dokumentation.

RxLifecycle-komponenter

RxLifecycle- biblioteket gör det enklare att binda observerbara prenumerationer på Android-aktiviteter och fragmentlivscykel.

Kom ihåg att glömma att avsluta prenumerationen på en observerbar kan orsaka minnesläckor och hålla din aktivitet / fragment levande efter att det har förstörts av systemet.

Lägg till biblioteket i beroenden:

// use the last version available
compile 'com.trello:rxlifecycle:0.6.1'
compile 'com.trello:rxlifecycle-components:0.6.1'

Utökar sedan Rx* -klasser:

  • RxActivity / support.RxFragmentActivity / support.RxAppCompatActivity
  • RxFragment / support.RxFragment
  • RxDialogFragment / support.RxDialogFragment
  • support.RxAppCompatDialogActivity

Du är redo, när du prenumererar på en observerbar kan du nu:

someObservable
    .compose(bindToLifecycle())
    .subscribe();

Om du kör detta i onCreate() för aktiviteten kommer den automatiskt att avskrivas i onDestroy() .

Samma sak händer för:

  • onStart() -> onStop()
  • onResume() -> onPause()
  • onAttach() -> onDetach() (endast fragment)
  • onViewCreated() -> onDestroyView() (endast fragment)

Som ett alternativ kan du ange händelsen när du vill att prenumerationen ska ske:

Från en aktivitet:

someObservable
    .compose(bindUntilEvent(ActivityEvent.DESTROY))
    .subscribe();

Från ett fragment:

someObservable
    .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
    .subscribe();

Du kan också få den livscykel som kan observeras med metodens lifecycle() att lyssna på livscykelhändelser direkt.

RxLifecycle kan också användas direkt för att överföra den livscykel som kan observeras:

.compose(RxLifecycleAndroid.bindActivity(lifecycle))

Om du behöver hantera Single eller Completable du göra det genom att bara lägga till respektive forSingle() eller forCompletable efter bindningsmetoden:

someSingle
    .compose(bindToLifecycle().forSingle())
    .subscribe();

Det kan också användas med Navi- biblioteket.

Rxpermissions

Detta bibliotek tillåter användning av RxJava med den nya Android M-tillståndsmodellen.

Lägg till biblioteket i beroenden:

Rxjava

dependencies {
    compile 'com.tbruyelle.rxpermissions:rxpermissions:0.8.0@aar'
}

Rxjava2

dependencies {
    compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.8.1@aar'
}

Användande

Exempel (med Retrolambda för korthet, men inte obligatoriskt):

// 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
        }
    });

Läs mer: https://github.com/tbruyelle/RxPermissions .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow