RxJava Асинхронная задача в Android

Я пытаюсь реализовать асинхронную задачу, используя RxJava в Android. Я попробовал следующий код, и он не работал. Он выполняется в потоке пользовательского интерфейса. Я использую следующую версию RxAndroid 0.24.0.

try {
            Observable.just(someMethodWhichThrowsException())
                    .subscribeOn(Schedulers.newThread())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(s -> onMergeComplete());
        } catch (IOException e) {
            e.printStackTrace();
        }

Однако следующее работает для меня асинхронно.

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();

Я пытаюсь понять следующее: 1. В чем разница между ними? 2. Как лучше всего создавать асинхронные задачи?

Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос