0
私はRxJAVAの初心者です。私は別のスレッドに初期化ジョブを割り当て、完了したら私にアナウンスして作業を開始したいと思います。このObservableには放出するデータがないため、this topicで説明したVoid型を使用します。しかし、Void型を使用するとObserverのonNextとonCompleteは機能しません。代わりにStringを使用しようとしましたが、正常に動作します。私はこのシナリオでVoidを使うべきか、RxJAVAにはこのような要求のための良い方法があるのか尋ねたいと思いますか?ここに私のコードは次のとおりです。オブザーバー<Void>のonNextとonCompleteは呼び出されません
Observable.create(new ObservableOnSubscribe<Void>() {
@Override
public void subscribe(ObservableEmitter<Void> e) throws Exception {
initialize();
e.onNext(null);
e.onComplete();
}
}).subscribeOn(Schedulers.computation()).subscribe(new Observer<Void>() {
@Override
public void onSubscribe(Disposable d) {}
@Override
public void onComplete() {
Log.d(TAG, "Test RxJAVA, onComplete");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "Test RxJAVA, onError");
}
@Override
public void onNext(Void noData) {
Log.d(TAG, "Test RxJAVA, onNext");
}
});
編集 編集@JohnWowUsからの回答。それはうまく動作します、ありがとう。
Completable.fromCallable(new Callable<Void>() {
@Override
public Void call() throws Exception {
initialize();
}
}).subscribeOn(Schedulers.computation())
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {}
@Override
public void onComplete() {
Log.d(TAG, "Test RxJAVA, onComplete");
}
@Override
public void onError(Throwable error) {
Log.d(TAG, "Test RxJAVA, onError");
}
});
ありがとう、ありがとう – Josper