我在create()
的幫助下手動創建Observable
。現在裏面,我檢查一些條件&基於此,我想通知用戶有關錯誤。以下是我正在創建觀察到:Android RxJava2應用程序在創建observable時調用emitter.onError()時崩潰
public Observable<User> loginUser(String email, String password) {
return Observable.create(
emitter -> {
myAsynchronousWork.onCompleteListener(
result -> {
if(!result.isSuccess()) {
// This causes the crash.
emitter.onError(new Throwable(result.getError()));
} else {
// Process result & create User object & return it. This works as expected.
emitter.onNext(user);
emitter.onComplete();
}
}
);
}
);
}
&然後我訂閱loginUser()
像:
loginUser("", "")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user -> {
Log.d("TAG", "logged in user => " + user.getUuid());
Log.d("TAG", "user name => " + user.getUserName());
Log.d("TAG", "user email => " + user.getEmailId());
}, throwable -> {
Log.e("TAG", "error in login => " + throwable.getMessage());
},() -> {
});
我希望呼籲emitter.onError()
應該往裏走的loginUser()
subscribe()
在那裏我已經登錄異常的onError,但相反,應用程序崩潰的異常返回emitter.onError()
logcat像沒有人來處理它!
我通過調試&檢查發現雖然它在線emitter.onError()
,emitter
是"null"
。但onNext & onComplete不會導致任何問題。 請讓我知道我在做什麼錯了?
爲錯誤提供StackTrace .. –