Sto cercando di implementare un'attività asincrona utilizzando RxJava in Android. Ho provato il seguente codice e non ha funzionato. Esegue sul thread dell'interfaccia utente. Sto usando la seguente versione di RxAndroid 0.24.0.Attività asincrona RxJava in Android
try {
Observable.just(someMethodWhichThrowsException())
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(s -> onMergeComplete());
} catch (IOException e) {
e.printStackTrace();
}
Tuttavia, il seguente funziona in modo asincrono per me.
Observable observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
try {
someMethodWhichThrowsException();
} catch (IOException e) {
e.printStackTrace();
}
subscriber.onCompleted();
}
});
observable.subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe();
io sto cercando di capire quanto segue: 1. Qual è la differenza tra loro? 2. Qual è la migliore pratica durante la creazione di compiti asincroni?
Grazie in anticipo.
Grazie ... Questo è veramente utile. – muneikh
Nessun problema! Le altre risposte ti hanno dato una soluzione, ma in realtà non forniscono molte spiegazioni. Suggerirei di andare con il 'defer' incorporato nell'aggiunta della libreria in più, specialmente come per Android - mantenere la dimensione dell'APK in basso :) –
Grazie, non me ne sono reso conto. Penso che questo dovrebbe essere l'approccio raccomandato. :) – muneikh