Mais conteúdo relacionado
Semelhante a Rxjavaとoptionalで関数型androidしよう (20)
Mais de Fumihiko Shiroyama (10)
Rxjavaとoptionalで関数型androidしよう
- 24. String userName = entityOpt
.filter(entity -> !TextUtils.isEmpty(entity.getUserName()))
.map(UserEntity::getUserName)
.orElse(getString(R.string.default_name));
filterやorElseとかと組み合わせると
更に強力に!
- 28. インストール
• compile io.reactivex:rxandroid:0.25.0'
• RxAndroidを入れるとRxJavaも一緒に入る
• RxAndroidは現時点で大きくなりすぎて開発者の間でライ
ブラリの分割が検討されており、RxAndroid固有の機能を
利用する場合は注意を要する
• https://github.com/ReactiveX/RxAndroid/issues/172
• https://github.com/JakeWharton/RxBinding
- 31. 結果を受け取る
• onNext(result -> {})
• 例えばユーザタッチイベントのObservableはユーザがタッチするごとにonNextにコールバックされる
• 非同期通信のObservableはここで結果を受け取る
• onError(e)
• エラーが発生するとここで受け取る
• onComplete()
• 有限ストリームは最後にここが呼ばれる
- 33. RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.build();
GitHubService service = restAdapter.create(GitHubService.class);
service.getUserPhoto(12345)
.subscribe(
photo -> {
doSomething(photo);
}
error -> {},
() -> {} // complete
);
購読!
非同期処理はこの瞬間はじまる。
- 39. GitHubService service = restAdapter.create(GitHubService.class);
service.getUserPhoto(12345)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
photo -> {
doSomething(photo);
}
error -> {},
() -> {} // complete
);
ワーカスレッドで実行
メインスレッドに結果を
通知してもらう