Sto usando RxJava e RxAndroid e voglio combinare due osservabili, ma nel frattempo ho bisogno di aggiornare l'interfaccia utente, quindi devo eseguire il codice nella discussione principale prima raggiungendo l'abbonato.RxJava, esegui codice nel thread observer prima di concatenare due osservabili
Una soluzione, invece di flatmapping (è un termine accettato?) Due osservabili, sarebbe quella di chiamare il successivo osservabile nell'abbonato subito dopo aver aggiornato l'interfaccia utente, ma sento che ci dovrebbe essere una soluzione più elegante come:
myObservable
.map(new Func1<Object, Object>() {
@Override
public Object call(Object object) {
/* do stuff on the main thread */
return object;
}
})
.flatMap(new Func1<Object, Observable<OtherObject>>() {
@Override
public Observable<OtherObject> call(Object o) {
return new MyOtherObservable(o);
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
Naturalmente, probabilmente la mappa non è l'operatore che devo usare qui. Quindi, c'è un operatore o un modo migliore per raggiungere questo obiettivo? O mi manca il punto su come dovrebbero funzionare gli osservabili?
E 'stato richiamato il thread dell'osservatore? La documentazione afferma che non funziona su un particolare schedulatore. – Pnikosis
Dovrai utilizzare observOn e specificare lo schedulatore – dwursteisen
Grazie, per sicurezza, questo significa che tutto ciò che eseguo su doOnNext verrà eseguito nello stesso thread dell'iscritto. – Pnikosis