この記事はRxJava Advent Calendar 2015 11日目の記事です。 RxJava・RxAndroidの紹介記事の中にはよく「面倒くさいASyncTaskを使わなくて済む」といったRxJavaを非同期処理の代わりとして紹介されています。 もちろん、非同期処理を置き換えられるという点はRxJavaの有効的な使い方の一つですが、RxJavaには他にも便利に使える機能があります。 今回はそれらの機能の一つであるSubjectについて紹介したいと思います。 Subjectとは 短く言うと「SubscriberとObservableの2つの機能を併せ持ったもの」です。 SubscriberにあるようなonNextやonError、onCompleteといったメソッドを呼び出せ、Observableのようにsubscribeメソッドを呼び出すことができます。 Subject<Stri
Retrofit + RxJava (+RxAndroid) で以下のようなちょっと複雑なユースケースはどう書けばよいのかなと調べてみたら defer と onErrorResumeNext を使えばよいんじゃないか、という話 (ただしRetrofitは関係ない話になった)。 参考: retrofit with rxjava handling network exceptions globally ユースケース ユーザ情報を取得するAPIを叩く(認証が必要なAPI) 401が返ってきたら、アクセストークンを再度取得する処理を行う アクセストークンの再取得に成功した場合は、新しいアクセストークンを使って、もとのリクエスト(ユーザ情報の取得)をもう1回行う アクセストークンの再取得に失敗した場合は、ログイン画面に飛ばす 実装 private void getUser() { Observabl
例えば◯秒間操作がなかったらパスキーロック画面を表示する、とかそういうの。普通に作るとタイマーを使って面倒な感じになっちゃいますが、RxJava と RxAndroid を使うととても簡単にできます。 RxJava + RxAnroid の場合 例えば、画面に EditBox と Button があって、「文字列の入力」と「ボタンが押されたか」を監視、◯秒間操作がなかったら××する、という処理をしたい時、RxJava+RxAndroid では以下のように書けます。 public class MyActivity extends Activity { private static final String TAG = "MyActivity"; private Subscription _subscription; @Override protected void onCreate(Bund
https://github.com/gfx/RxT4A これは何 RxAndroidのフォーク RxBindingの機能は実装しない 動機 RxAndroidの先行きが不透明 社内で作ってるRxJava用ユーティリティを公開したい(未着手) RxJavaのベストプラクティスやバッドくラクティスを example/ に提供したい(未着手) 提供しているもの AndroidSchedulers - main threadで実行するスケジューラ AndroidCompositeSubscription - CompositeSubscription をAndroidコンポーネントで使いやすくしたもの OperatorAddToCompositeSubscription - method chain中に AndroidCompositeSubscription#add() をするためのオペレータ
※これもう大分古いので AndroidでJava8環境 2016 - visible true も御覧ください。 はじめに RxAndroid(というかRxJava)とRetrolambdaでそろそろ大体Java8な環境でAndroidアプリケーションが開発出来るのではないかと考えて試してみた。 2014年4月頃のRetrolambdaはまだ1.1.4とかでlambdaをおまけ程度に使える程度で「あー戯れって感じねはいはい」という事でスルーしていたんだけど、最近久しぶりに覗いたら1.8.0まで育っていてTry-with-resources*1やMethod referencesがサポートされていた。 また、RxJavaは1.0.0が11月にリリースされて実用段階に入ってきており、Java8のStream APIを概ね補完する様な機能を持っている。 更にAndroidでRxJavaを扱うため
「チェックAがONならば、項目Bは入力必須とする」という Validation を RxJava + RxAndroid でやるAndroidRxJavaRxAndroid 例えばショッピングサイトとかの発送先指定のフォーム『登録されている住所とは違う住所に送りたい時、「別の住所に送る」をチェックする、すると「住所2」が必須入力となり、入力するまで次へ進めない』的なちょっと込み入ったValidationをReactive ExtensionsのJava版、RxJavaとRxAndroidでやってみました。 動作イメージ まずいきなり動作結果から。 住所1は入力必須。 住所2は「住所2へ配送する」がチェックされている場合のみ、入力必須。 必須項目が入力されていない場合はボタンを押せない こんな仕様です。 実装 @Override protected void onCreate(Bundle
はじめに @rejuspotaroさんの関数型言語を学ぶことは実務でどう役に立ったかを見てRxJavaを使ってみたくなりました。また、iOSのSwiftとAndroidのGroovyを見て、RxJavaをAndroidで使うなら、Groovyでだなと思いました。 また、上記の記事では、言及されていませんでしたがRxAndroidというものがあるようです。Viewのクリックのストリームや、EditTextの変更のストリームを生成するメソッドが用意されているみたいです。 今まで私は、RxJavaをちょっと試してみるならGroovy(これとこれ)とか、RxGroovyについて投稿していましたが、今回やっとRxAndroid、RxJavaをGroovyで使ってみたいと思います。 ボタンクリック回数を表示 ボタンクリックの回数をTextViewに表示したいと思います。(ええ、分かっていますよ。Rx使
はじめに 仕事で作っているアプリで非同期処理のコールバックが地獄めいてきて吐きそうになったので そのあたりをバッチリ解決するためのアレコレを模索していた。 そんな折にKeithYokomaさんがQiitaに海外記事の翻訳を公開したのを読んで、一念発起したという具合です。 ReactiveExtensions - 【翻訳】AsyncTask と AsyncTaskLoader を rx.Observable に置き換える - RxJava Android Patterns - Qiita EventBusを使う方法も考えたのだけど、あれはLocalBroadcast使うまでもないときに発動させるのがいいんだろうな、という感想です。 そんなわけで、色々と見たこと・考えたことを備忘録としてまとめました。 参考にしたサイトたち だいたいこれ読んどけばOKみたいなそんな感じです。 入門 Reacti
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く