2017-10-12 5 views
1

Ich lerne RxJava und ich habe einige Zweifel an der Scheduler. Wann man welches benutzt. Die AndroidSchedulers.mainThread() ist ziemlich einfach und klar, wann immer wir zum Android UI-Thread kommen müssen, können wir diesen Scheduler verwenden. Aber ich bin verwirrt mit dem anderen SchedulersRxJava: Wie wähle ich den richtigen Scheduler

  • Schedulers.io()
  • Schedulers.computation()

  • Schedulers.newThread()

In vielen Proben I pepople mit Schedulers.io() und Schedulers.computation() für netzinterne Gespräche gesehen haben, db-Operationen usw. Kann w Wählen Sie zufällig eine von ihnen für Hintergrundaufgaben aus? Wenn nicht, welche sind die geeigneten Situationen, um jedes auszuwählen? Wann verwenden Sie Schedulers.newThread()? Es wäre hilfreich, wenn jemand es in einfachen Worten erklären könnte. Danke im Voraus!!

+1

Jede Methode auf 'Schedulers' haben eine detaillierte Javadoc, die Verwendungen vorschlagen: http://reactivex.io/RxJava/2. x/javadoc/io/reactivex/schedulers/Schedulers.html – akarnokd

+0

Verwenden von 'newThread()' für jede Hintergrundoperation ist in Ordnung? – Jrd

+0

Wenn es Ihnen nichts ausmacht, viele Threads zu erstellen, dann ja. Andernfalls verwendet 'io()' Threads erneut und ist wirtschaftlicher. – akarnokd

Antwort

1

io(): Wenn Sie E/A-gebundene Arbeiten wie Datenbankanfragen, Netzwerkanrufe usw. ausführen möchten, verwenden Sie io. Dieser Scheduler wird von einem unbegrenzten Threadpool unterstützt (der OutOfMemory-Fehler verursachen kann, wenn Sie mit der Anzahl der verwendeten Threads verrückt werden). Was es im Wesentlichen bedeutet, ist, dass Sie nicht den Overhead bekommen, jedes Mal einen neuen Thread zu erstellen. Weitere Informationen Why is creating thread expensive?

newThread(): Wie der Name schon sagt, wird jedes Mal ein neuer Thread erstellt.

computation: Wenn Sie eine teure CPU-gebundene Operation haben, sollten Sie diesen Scheduler verwenden. Dieser Scheduler ist begrenzt, d. H. Es gibt eine begrenzte Anzahl von Threads basierend auf dem System.

Wie andere haben darauf hingewiesen, nehmen Sie bitte einen Blick auf offizielle Dokumentation zu verstehen, mehr here

Verwandte Themen