[解決済み] Rxjavaのレトロフィット Schedulers.newThread() vs Schedulers.io()の比較
2023-05-15 02:12:50
質問
を使用する利点は何ですか?
Schedulers.newThread()
対
Schedulers.io()
で
Retrofit
というネットワーク・リクエストを使用します。私は、多くの例で
io()
を使用する多くの例を見ましたが、私はその理由を理解したいのです。
シチュエーション例です。
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())...
対
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())...
私が見たことのある理由のひとつは
newThread()
は、作業の単位ごとに新しいスレッドを作成します。
io()
はスレッドプールを使用します。
しかし、その議論はアプリにどのような影響を与えるのでしょうか?また、他にどのような側面があるのでしょうか?
どのように解決するのか?
を使用する利点があることは正しいです。
Schedulers.io()
を使う利点はスレッドプールを使うことであり、一方
Schedulers.newThread()
はそうではありません。
スレッドプールの使用を検討すべき主な理由は、アイドル状態で仕事を待っている、あらかじめ作成された多数のスレッドを維持することです。これは、実行する作業があるときに、スレッドを作成するオーバーヘッドを経る必要がないことを意味します。作業が完了したら、スレッドを常に作成および破棄する代わりに、そのスレッドを将来の作業のために再利用することもできます。
スレッドを作成するにはコストがかかるので、その場で作成するスレッドの数を最小限にすることは一般的に良いことです。
スレッドプールの詳細については、以下をお勧めします。
関連
-
[解決済み】AndroidでRxJava ObservableとシンプルなCallbackを使うべきタイミングは?
-
[解決済み】RxJavaスケジューラの使用例
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] EditTextをReadOnlyにする
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
-
[解決済み] Android Lintが翻訳されていない文字列を訴えないようにする。
-
[解決済み] Retrofit 2.0とRxJavaを使ったレスポンスステータスコードの取得
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】RxJavaスケジューラの使用例
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
-
[解決済み] Travis.yml ./gradlew : パーミッションが拒否されました。