Was sind die Vorteile zu nutzen Schedulers.newThread()
vs Schedulers.io()
in Retrofit
Netzwerk - Anfrage. Ich habe viele Beispiele gesehen, die verwenden io()
, aber ich möchte verstehen, warum.
Beispielsituation:
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())...
vs.
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())...
Einer der Gründe, die ich gesehen habe, ist -
newThread()
erstellt für jede Arbeitseinheit einen neuen Thread. io()
wird einen Thread-Pool verwenden
Aber welchen Einfluss hat dieses Argument auf die App? Und welche anderen Aspekte gibt es?
quelle
Schedulers.io
?Schedulers.io()
Sie auf die E / A-Grenzwerte des Betriebssystems stoßen (z. B. maximale Anzahl geöffneter Dateien, maximale Anzahl von TCP-Verbindungen, die aus Gründen der Zuverlässigkeit auch nach der Entsorgung für einen bestimmten Zeitraum offen bleiben können). . Jeder neue Thread benötigt außerdem eine nicht triviale Mindestmenge an RAM (> 512 KB, arbeitet jedoch mit 1 MB), sodass Ihnen möglicherweise der Arbeitsspeicher ausgeht.