Retrofit
ネットワークリクエストでSchedulers.newThread()
とSchedulers.io()
を使用するメリットは何ですか?私はio()
を使用する多くの例を見てきましたが、なぜそれを理解したいのですか?Rxjava Scheduler.newThread()vs Schedulers.io()との連携強化
例の状況:私が見てきた理由の
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())...
一つの対
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())...
がある -
newThread()
は、各作業単位のための新しいスレッドを作成します。 io()
はスレッドプールを使用します
しかし、その引数がアプリに与える影響は何ですか?他にどのような側面がありますか?
はに基づいているScheduler.io()についてのコメントを追加する価値があるかもしれませんいくつかのユースケースには適さない無限のスレッドプールhttp://stackoverflow.com/questions/31276164/rxjava-schedulers-use-cases –
@DaveMotenどのユースケースが 'Schedulers.io'経由でスレッドプールに不適切なのですか? –
'Schedulers.io()'と並行して多くの作業をしているなら、OSの入出力制限にぶつかる可能性があります(例えば、開いているファイルの最大数、信頼性のために開いている最大数のTCP接続処分後も一定期間)。また、新しいスレッドには最小限のRAM(512K以上> 1M)が必要なため、RAMが不足する可能性があります。 –