2016-06-03 9 views

Antwort

0

Verwenden

Observable.fromCallable(() -> Thread.currentThread().getName()) 
      .subscribeOn(Schedulers.computation()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(name -> Timber.d("Worker thread: %s, Handle thread: %s", name, Thread.currentThread().getName())); 
1

Wenn Sie sicher sein wollen, wird Ihre .doOnNext() auf dem angegebenen Scheduler ausgeführt wird, dann ändern .subscribeOn()-.observeOn(). Intuitiv bestimmt .observeOn(), welcher Scheduler für alles verwendet wird, was danach kommt.

.subscribeOn() betrifft nur, welcher Scheduler verwendet wird, um onSubscribe() Methode Ihrer beobachtbaren Erstellung auszuführen. Was später passiert, hängt stark davon ab, was genau du abonnierst oder wie @akarnokd es ausdrückt: Was ist die Quelle deiner Ereignisse? Es ist nicht sicher anzunehmen, dass Elemente auf dem Scheduler ausgegeben werden, der in .subscribeOn() angegeben ist. Tatsächlich gibt es zumindest ein paar Beispiele, wo diese Annahmen nicht gelten.

Verwandte Themen