BackpressureStrategy.DROPが期待どおりに機能しない

Iuq281

このアクティビティ内およびその中に投稿を表示するアクティビティがあるとしましょうRecyclerView。更新ボタンがあります。

ユーザーが更新ボタンをクリックすると、サーバーに接続して投稿を再度取得します。

ユーザーが更新ボタンをクリックし、サーバーから投稿を取得しようとしているときに、ユーザーが更新ボタンをもう一度16回クリックしたとすると、サーバーに17回接続されます。

BackpressureStrategy.DROP内部を使用してこの問題を解決しようとしましrepeatWhenたがBackpressureStrategy.DROP、サーバーから投稿を取得するときに接続が切断されません。

PublishSubject<String> retrySubject = PublishSubject.create();
PublishSubject<String> repeatSubject = PublishSubject.create();

new Retrofit.Builder()
        .baseUrl("...")
        .addCallAdapterFactory(RxJava3CallAdapterFactory.create())
        .addConverterFactory(GsonConverterFactory.create())
        .build()
        .create(API.class)
        .getPosts()
        .repeatWhen(objectFlowable -> objectFlowable.zipWith(repeatSubject.toFlowable(BackpressureStrategy.DROP), (o, s) -> s))
        .retryWhen(throwableFlowable -> throwableFlowable.zipWith(retrySubject.toFlowable(BackpressureStrategy.DROP), (throwable, s) -> s))
        .subscribe();

//repeatSubject.onNext("") inside refresh button
//retrySubject.onNext("") inside retry button
akarnokd

zipWithデフォルトのプリフェッチ量は128で、最小値は1であるため、トリガーされるリピートは常に1つです。

内部シーケンスを繰り返す/再試行する準備ができたときにのみサブジェクトを考慮したい場合は、次を使用しますflatMap

.repeatWhen(f -> 
    f.flatMap(e -> repeatSubject
                   .toFlowable(BackpressureStrategy.DROP)
                   .take(1)
    )
)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

rxjava2のBackpressureStrategy.BUFFER演算子とonBackpressureBuffer演算子の違い

パンダ-drop_duplicatesが期待どおりに機能しない

NSTaskが期待どおりに機能しない/期待される

LESS CSSExtend機能が期待どおりに機能しない

Azuresearchsearch.inの機能が期待どおりに機能しない

Javascript機能が期待どおりに機能しない

ソート機能が期待どおりに機能しない

TypescriptnoImplicitAnyおよびnoImplicitReturnsが期待どおりに機能しない

onMouseEnterおよびonMouseLeaveが期待どおりに機能しない

Colspanが期待どおりに機能しない(CSSなし)

getAnnotations()が空であり、期待どおりに機能しない

RSpec割り当てが期待どおりに機能しない

透明な境界線-色が期待どおりに機能しない

再帰的な `setTimeout`が期待どおりに機能しない

透明な境界線-色が期待どおりに機能しない

観測可能な角度が期待どおりに機能しない

__弱い自己が期待どおりに機能しない

ぼかしが期待どおりに機能しない

安心したjsonpathfindAllが期待どおりに機能しない

Javastring.lengthが期待どおりに機能しない

Node.js MongoDBupdateOneが期待どおりに機能しない

jQuery .when()。then()が期待どおりに機能しない

JavaScript if / elseが期待どおりに機能しない

LD_PRELOADが期待どおりに機能しない

fflush()が期待どおりに機能しない

Routes.push()がNextJSで期待どおりに機能しない

CountVectorizer(analyzer = 'char_wb')が期待どおりに機能しない

didChangeAppLifecycleStateが期待どおりに機能しない

equals()が期待どおりに機能しない

TOP 一覧

  1. 1

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  2. 2

    どのように関係なく、それがどのように「悪い」、すべてのSSL証明書でのHttpClientを使用しないように

  3. 3

    Modbus Python Schneider PM5300

  4. 4

    Ansibleで複数行のシェルスクリプトを実行する方法

  5. 5

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  6. 6

    System.Data.OracleClient.OracleException:ORA-06550:行1、列7:

  7. 7

    インデックス作成時のドキュメントの順序は、Elasticsearchの検索パフォーマンスを向上させますか?

  8. 8

    scala.xmlノードを正しく比較する方法は?

  9. 9

    NGX-ブートストラップ:ドロップダウンに選択したアイテムが表示されない

  10. 10

    Elasticsearch - あいまい検索は、提案を与えていません

  11. 11

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  12. 12

    Elasticsearchの場合、間隔を空けた単語を使用したワイルドカード検索

  13. 13

    Elasticsearchでサーバー操作を最適化:低いディスク透かしに対処する

  14. 14

    ラベルとエントリがpythontkinterに表示されないのはなぜですか?

  15. 15

    変数値を含むElasticSearch検索結果

  16. 16

    グラフ(.PNG)ファイルをエクスポートするZabbix

  17. 17

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  18. 18

    Audacity:プロジェクトではなく、サウンドファイルのみを保存します

  19. 19

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  20. 20

    Excelは、メモ帳データの複数の列を1つの列として解釈します

  21. 21

    ブラウザがHTMLテンプレートを解釈しない

ホットタグ

アーカイブ