問題タブ [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.

0 投票する
3 に答える
8492 参照

android - AsyncTask を RxAndroid に変換する

otto と を使用して UI に応答を投稿するには、次の方法がありAsyncTaskます。

これをRxAndroid ライブラリAsyncTaskRxJava使用するように変換するには、助けが必要です。

0 投票する
0 に答える
450 参照

android - オブザーバブル/サブスクリプションのラッピング

Observable の戻り値の型を持つ Retrofit を使用して、Activity でログイン サービスを適切に処理しています。

私がやりたいことは、doOnNext と flatmap のロジックを別のクラスに引き出し、最終的に Activity を次のように単純化することです。

そして、マネージャー クラスで API サービス呼び出しを処理します。

これを達成するための最善の方法についてアドバイスを求めています。マネージャー クラスが Observable を返すようにしたいのは明らかですが、Retrofit Observable を使い続ける (そしてサブスクリプションをラップする) ことはできますか? それとも、もう少し同期させて、単純な Observable を作成して返すほうがよいのでしょうか?

アップデート

マネージャー クラスでオペレーション チェーンを構築し、Activity でサブスクリプション時にすべて実行できるようにすることで、これとは異なるアプローチを考えさせられるサンプルをいくつか見つけました。私のマネージャーメソッドは defer を使用するようになり、次のようになります。

上記のように私のアクティビティをサブスクライブします。

私が球場にいるかどうかの洞察、またはこのユースケースをより適切に処理する方法についてのアドバイスを期待しています。ありがとう!

UPDATE2

したがって、延期はここでは何の役にも立ちません。ログイン方法は次のように要約されます。

このアプローチに対するコメント/改善を歓迎します。私が遭遇したほとんどの例は、サブスクリプションが行われる場所ですべてを実行します。

0 投票する
1 に答える
1275 参照

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

0 投票する
1 に答える
1349 参照

java - RxJava サブジェクトとエラー処理

イベントバスと同様の動作を実現しようとしています。私の要件には、 aPublishSubjectが適しているようです。

サブジェクトは、何らかのグローバル操作の結果を表すアイテムを発行します。これは、例外の場合に正常に解決されるか失敗する可能性があります。サブジェクトが呼び出されると終了し、将来のサブスクライバーは1つを除いてエミッションを取得しないためonNext()、成功イベントとエラーの場合にonError()は使用できません。ThrowableonError()onError()

現時点では、イベントを表すクラスを作成しThrowable、エラーが発生した場合はオプションで a を参照する必要があります。ただし、内部でエラーを処理する必要があるため、これは賢明ではないようonNext()です。

あなたならどうしますか?

0 投票する
3 に答える
2081 参照

android - RxJava:構成の変更が発生した場合、オブザーバブルの作業をどのように再開しますか?

私はRxJavaRxAndroidを使用しています。構成の変更 (アクティビティのローテーション、言語ロケールの変更など) が発生した場合、オブザーバブルの作業をどのように再開しますか?

オブザーバブルの作業を再開するだけでなく、サブスクライバーがサブスクライブ解除されたときに、発行されたアイテムを保存し、サブスクリプションの直後にすべての保存されたアイテムを発行する必要があります。

たくさんの記事を読みましたが、質問に対する答えが見つかりませんでした。

いくつかの例を見つけましたが、どれも問題を解決しません:

0 投票する
1 に答える
5739 参照

android - RxJava と Retrofit を使用した定期的な HTTP リクエスト

RxJava/RxAndroid と Retrofit を使用して定期的な http リクエストを実行し、x 秒ごとにデータを更新することは可能ですか?

現在、x 秒ごとに起動する IntentService と Recursive Handler/Runnable を使用しています。それをすべて削除して、代わりに RxJava にリクエストを処理させることができるかどうかを知りたいです。

編集

すべてが完了したら、次のコードになりました。更新は大歓迎です。

0 投票する
1 に答える
2147 参照

android - Retrofit と Rxjava を使用してネットワーク エラーのダイアログを表示する

Retrofit を使用してサーバーと通信するアプリを構築しています。ネットワーク エラーが発生した場合は、ダイアログ (トーストと同等) が表示され、ユーザーがダイアログをクリックした後に要求がやり直されます。問題は、リクエストごとに重複したコードを記述するのではなく、グローバルに処理したいということです。この質問onErrorResumeNext()a.bertucciが説明したように、監視可能なビューイベントを使用すると完璧に見えますが、残念ながらスレッドで実行され、UI要素を開始できません。それを解決することは可能ですか?Retrofit.Idle

失敗した例: