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主な追加は、Androidのメインスレッドまたは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()を使用して監視可能なライフサイクルを取得することもできます。
RxLifecycleはライフサイクルオブザーバブルに直接渡すこともできます:
.compose(RxLifecycleAndroid.bindActivity(lifecycle))
SingleまたはCompletableを処理する必要がある場合は、bindメソッドの後にforSingle()またはforCompletableをそれぞれ追加するだけでCompletableます。
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 。