Tarefa RxJava Async no Android
Estou tentando implementar uma tarefa assíncrona usando RxJava no Android. Eu tentei o seguinte código e não funcionou. Ele é executado no thread da interface do usuário. Estou usando a seguinte versão do RxAndroid 0.24.0.
try {
Observable.just(someMethodWhichThrowsException())
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(s -> onMergeComplete());
} catch (IOException e) {
e.printStackTrace();
}
No entanto, o seguinte funciona de forma assíncrona para mim.
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();
Estou tentando entender o seguinte: 1. Qual é a diferença entre eles? 2. Qual é a melhor prática ao criar tarefas assíncronas?
Desde já, obrigado.