問題タブ [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 - AsyncTask を RxAndroid に変換する
otto と を使用して UI に応答を投稿するには、次の方法がありAsyncTask
ます。
これをRxAndroid ライブラリAsyncTask
をRxJava
使用するように変換するには、助けが必要です。
android - オブザーバブル/サブスクリプションのラッピング
Observable の戻り値の型を持つ Retrofit を使用して、Activity でログイン サービスを適切に処理しています。
私がやりたいことは、doOnNext と flatmap のロジックを別のクラスに引き出し、最終的に Activity を次のように単純化することです。
そして、マネージャー クラスで API サービス呼び出しを処理します。
これを達成するための最善の方法についてアドバイスを求めています。マネージャー クラスが Observable を返すようにしたいのは明らかですが、Retrofit Observable を使い続ける (そしてサブスクリプションをラップする) ことはできますか? それとも、もう少し同期させて、単純な Observable を作成して返すほうがよいのでしょうか?
アップデート
マネージャー クラスでオペレーション チェーンを構築し、Activity でサブスクリプション時にすべて実行できるようにすることで、これとは異なるアプローチを考えさせられるサンプルをいくつか見つけました。私のマネージャーメソッドは defer を使用するようになり、次のようになります。
上記のように私のアクティビティをサブスクライブします。
私が球場にいるかどうかの洞察、またはこのユースケースをより適切に処理する方法についてのアドバイスを期待しています。ありがとう!
UPDATE2
したがって、延期はここでは何の役にも立ちません。ログイン方法は次のように要約されます。
このアプローチに対するコメント/改善を歓迎します。私が遭遇したほとんどの例は、サブスクリプションが行われる場所ですべてを実行します。
android - AndroidSchedulers.mainThread() を使用している場合でも CalledFromWrongThreadException
さて、プレゼンテーション用の MVP レイヤーを実装し、RxJava と RxAndroid を使用します。これを例として取り上げ、それに基づいて構築しました。
演技を開始するためにプレゼンターが呼び出されるとSubscriber
、モデル インタラクターに a を送信します。Interactor は と を作成し、Observable
と を設定observeOn(Schedulers.io())
しsubscribeOn(AndroidSchedulers.mainThread())
ます。そうすれば、呼び出しが (Presenter 内で) 戻ってきたときに、Subscriber
すべての呼び出しが UI スレッド上にあると考えられます。その中で、Subscriber
データをビューにバインドします。ただし、これにより次のことが発生しCalledFromWrongThreadException
ます。
スタックトレースは実際にはこの時点で途切れます。
もちろん、ビューの UI スレッドで手動で実行することもできますが、 を設定するときは必要ないsubscribeOn(AndroidSchedulers.mainThread())
はずです。以前は問題なくこれを実行しました。何か不足していますか?
実装の詳細: DI には Dagger2 を使用し、Interactor は a で作成されModule
、コンストラクターを介して Scheduler を取得します。
プレゼンターはコンストラクター インジェクションを介してインターアクターを取得し、プレゼンターは を介してビューにインジェクトされますComponent
。
java - RxJava サブジェクトとエラー処理
イベントバスと同様の動作を実現しようとしています。私の要件には、 aPublishSubject
が適しているようです。
サブジェクトは、何らかのグローバル操作の結果を表すアイテムを発行します。これは、例外の場合に正常に解決されるか失敗する可能性があります。サブジェクトが呼び出されると終了し、将来のサブスクライバーは1つを除いてエミッションを取得しないためonNext()
、成功イベントとエラーの場合にonError()
は使用できません。Throwable
onError()
onError()
現時点では、イベントを表すクラスを作成しThrowable
、エラーが発生した場合はオプションで a を参照する必要があります。ただし、内部でエラーを処理する必要があるため、これは賢明ではないようonNext()
です。
あなたならどうしますか?
android - RxJava:構成の変更が発生した場合、オブザーバブルの作業をどのように再開しますか?
android - RxJava と Retrofit を使用した定期的な HTTP リクエスト
RxJava/RxAndroid と Retrofit を使用して定期的な http リクエストを実行し、x 秒ごとにデータを更新することは可能ですか?
現在、x 秒ごとに起動する IntentService と Recursive Handler/Runnable を使用しています。それをすべて削除して、代わりに RxJava にリクエストを処理させることができるかどうかを知りたいです。
編集
すべてが完了したら、次のコードになりました。更新は大歓迎です。
android - Retrofit と Rxjava を使用してネットワーク エラーのダイアログを表示する
Retrofit を使用してサーバーと通信するアプリを構築しています。ネットワーク エラーが発生した場合は、ダイアログ (トーストと同等) が表示され、ユーザーがダイアログをクリックした後に要求がやり直されます。問題は、リクエストごとに重複したコードを記述するのではなく、グローバルに処理したいということです。この質問でonErrorResumeNext()
a.bertucciが説明したように、監視可能なビューイベントを使用すると完璧に見えますが、残念ながらスレッドで実行され、UI要素を開始できません。それを解決することは可能ですか?Retrofit.Idle
失敗した例: