2017-09-20 4 views
0

J'ai créé une observable qui va être utilisée par plusieurs abonnés qui émettent des tâches gourmandes en ressources. En utilisant comme ceci:Attendre l'achèvement des tâches des abonnés de ConnectableObservable

val connectableObservable = Observable.create {...}.publish() 
connectableObservable.doOnNext {...}.subscribe() 
connectableObservable.doOnNext {...}.subscribe() 
connectableObservable.connect() 

Malheureusement, connect() n'attend que de manière synchrone une source pour que les abonnés n'effectuent pas de tâches. Existe-t-il un moyen d'attendre que les abonnés de ConnectableObservable terminent les tâches et seulement ensuite continuer l'exécution?

+0

Résolu avec la suppression de .observeOn() de l'abonné. Je me demande s'il existe un moyen d'utiliser le multi-thread avec .connect() de cette façon. –

Répondre

0

Un des abonnés de mai contenait .observeOn (Schedulers.io()) qui envoie des messages au planificateur spécifié. Probablement .connect() n'attend que le thread actuel. Le supprimer résout le problème.