問題タブ [rx-android]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - RxAndroid: Observable を同期的に実行する
私は RxAndroid で Rx を開始しています。Retrofit を使用して API で GitHub ユーザーの名前をリストしたいと考えています。各 API リクエストは 100 人のユーザーを取得します。すべてのユーザーを処理した後、次の 100 人を取得したいのですが、その方法がわかりません。誰でも私を助けることができますか?
私のコードのスニペットはどこにありますか
改造インターフェース
ユーザークラス
そして私の活動の onCreate メソッド
android - Robolectric / RxJava / RxAndroid に依存する Android アプリの単体テスト
Robolectric 3.0 スナップショットを使用しています。
私はテストを持っています:
ここで重要なことは、API がユーザーが存在することを報告する場合 (上記のモックから行う)、サインイン ボタンのテキストは、という名前の文字列リソースの値と同じにする必要があるということR.string.button_login
です。
ボタンの状態を変更するためのセットアップは、次のようにアクティビティで行われます。
ReactiveEditText.textObservableForTextView は、単純に textChangedListener インターフェイスをリアクティブな方法でラップします。
usernameAvailable は上記のモック化されたデータを受け取り、次のようになります。
EditText への変更をリッスンするために「即時」スケジューラを使用していることに注意してください。私の混乱はこれです: 単体テストは常に失敗し、(デバッガーにジャンプすると)assertThat
オブザーバーが EditText の変更を確認する前にテスト内のステートメントが起動しているように見えます。オブザーバーが最終的に起動し、テキストが signInButton に適切に設定されていることをデバッガーで確認できます。setText
即時スケジューラを使用すると、呼び出された直後に期待どおりにすべてが起こると思いました。
android - RxJavaで結果値を返す
WebView で RxJava を使用してクリック デバウンスを実装したいと考えています。
たとえば、ユーザーがリンクをすばやくクリックすると、最初のクリックだけを扱いたいとします。まず、これでいい
と思いました。throttleFirst
throttleFirst
正常に動作しますが、この方法では値を返すことができないことに気付きました。
質問:
のような戻り値の型を持つメソッドの場合、RxJava で値を返すにはどうすればよいshouldOverrideUrlLoading
ですか?
または、そのような場合に Rx を使用するべきではありませんか? (フラグをHandler#postDelayed
? で変更するなど、別の方法に進みます)
android - Android + RxJava - データベースと Web サービスからデータをロードする
RxJava を使用して、(レトロフィット経由で) Web サービスからデータをロードしたいと考えています。以前の結果のデータベース キャッシュもあります。
これらのそれぞれについて、すでにオブザーバブルがあると仮定します。
これら2つのオブザーバブルを1つにマージしたい:
私が望む動作は、サブスクライバーがデータベースの結果を利用可能になるとすぐに受け取り、続いて restService の結果を受信することです (データベースからのフェッチがネットワーク呼び出しを行うよりも速いと仮定します)
私が自分で思いつくことができる最高のものは次のとおりです。
これは私には少しハッキリしているように思えます。このような一般的なシナリオには、より良い解決策が必要だと思います。
また、ネットワーク オブザーバブルでエラーが発生した場合でも、db の結果が引き続き渡されると便利です。onErrorResumeNext()
dbObservable 自体を呼び出して返すこともできますが、エラーが発生したことをサブスクライバーに通知する必要があります。
助言がありますか?
retrofit - 前のオブザーバブルが成功した場合にのみサービスを呼び出す
バックグラウンド
RX for Java の概念に飛び込んでいます。率直に言って、わかりません。私のプロジェクトでは、サービスを呼び出すために改造ライブラリを使用しています。現在、コールバックを使用してすべてのサービスを実装しています。サービス呼び出しを調整したい場合は、コールバック内でコールバックを呼び出さなければならず、コードがかなり混乱します。
問題
次の 2 つのサービスでは、Observables アプローチを使用してサービス A が正常に完了した場合に、サービス B を呼び出したいと考えています。
私は自分のタスクに使用できるObservable オペレーターを探していましたが、運がありませんでした。次のような演算子を想像できます。
rx-java - Observable/Subject に非同期的に発行する
RxJava の基本的な使用方法は理解できたと思いますが、Observer パターンの使用に問題があります。
基本的に、私がやりたいことは、List
監視できるオブジェクトの静的を持ち、リストへの追加を使用してこのデータを Web サービスに送信することです。
これまでの私のアプローチは、 astatic List<Object>
と a を作成するだけでしたstatic Observable<Object>
。このオブザーバブルは、
次に、アップロード ロジックを.subscribe()
呼び出し内に配置します。List
これは、事前にすべての設定を行っていれば機能しますが、実行時にあちこちに入力したいと考えています。これは.subscribe()
、もう一度電話をかけても機能しますが、それを行うと何か間違ったことをしているように感じます. 既存のサブスクリプションをオブザーバブルから発行された新しいアイテムに作用させることができると思っていましたが、リストに追加しても何も起こっていないようです。
より良い/正しいアプローチに関する洞察をいただければ幸いです。
asynchronous - オブザーバブルが作成された後に rxjava add items
rxjava を使い始めたばかりで、行き詰まりました。rxjava を正しい方法で使用していない可能性がありますが、Observable
作成後に項目を追加する必要があります。電話をかけるだけでサブスクライバーがそれらを受け取ることは理解していますがObservable.just("Some", "Items")
、非同期タスクがあり、後でタスクが終了したときにアイテムを追加する必要がある場合はどうすればよいでしょうか? のようなものを見つけることができませんでしたObservable.addItems("Some", "More", "Items")