Si j'écris quelque chose comme ça, alors les deux l'opération et la notification seront sur le thread actuel ...
Observable.fromCallable(() -> "Do Something")
.subscribe(System.out::println);
Si je fais l'opération sur un thread d'arrière-plan comme celui-ci, alors les deux l'opération et la notification seront sur un arrière-plan thread ...
Observable.fromCallable(() -> "Do Something")
.subscribeOn(Schedulers.io())
.subscribe(System.out::println);
Si je veux observer sur le fil principal et faire en arrière-plan dans Android je ferais ...
Observable.fromCallable(() -> "Do Something")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(System.out::println);
Mais si j'écrivais un programme standard Java, quel est l'équivalent pour indiquer que vous voulez observer sur le thread principal?
Convertissez le Observable
en BlockingObservable
via .toBlocking()
; cela vous donne des méthodes de blocage pour attendre la fin, obtenir un élément, etc.
Pour RxJava2, utilisez "blockingSubscribe()
"
Flowable.fromArray(1, 2, 3)
.subscribeOn(Schedulers.computation())
.blockingSubscribe(integer -> {
System.out.println(Thread.currentThread().getName());
});