RXJava/RXAndroid - 无法在未调用 Looper.prepare() 的线程内创建处理程序
RXJava/RXAndroid - Can't create handler inside thread that has not called Looper.prepare()
当您收到此消息的错误时
rx.exceptions.OnErrorFailedException:尝试将错误传播到 Observer.onError
时出错
但是您的订阅已经在处理 onError
MyMethodThatRetunsAnObservable(string)
.subscribe(
response -> handleResponse(response),
throwable -> handleError(throwable));
如果由以下原因引起:java.lang.RuntimeException:无法在未调用 Looper.prepare()
的线程内创建处理程序
请注意,如果 Scheduler 是真正异步的,onError 通知将在发射线程上先于 onNext 通知。所以需要指定我们要观察的UI线程
public static void shortToast(String msg) {
Observable.just(msg)
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(message -> {
Toast.makeText(App.getInstance(), message, Toast.LENGTH_SHORT).show();
});
}
是的,您遇到了错误。您应该调用 subscribeOn(AndroidSchedulers.mainThread()
而不是 observerOn
。 show log函数在observerOn
之前调用,在onSubcribe
方法中调用。
当您收到此消息的错误时
rx.exceptions.OnErrorFailedException:尝试将错误传播到 Observer.onError
时出错但是您的订阅已经在处理 onError
MyMethodThatRetunsAnObservable(string)
.subscribe(
response -> handleResponse(response),
throwable -> handleError(throwable));
如果由以下原因引起:java.lang.RuntimeException:无法在未调用 Looper.prepare()
的线程内创建处理程序请注意,如果 Scheduler 是真正异步的,onError 通知将在发射线程上先于 onNext 通知。所以需要指定我们要观察的UI线程
public static void shortToast(String msg) {
Observable.just(msg)
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(message -> {
Toast.makeText(App.getInstance(), message, Toast.LENGTH_SHORT).show();
});
}
是的,您遇到了错误。您应该调用 subscribeOn(AndroidSchedulers.mainThread()
而不是 observerOn
。 show log函数在observerOn
之前调用,在onSubcribe
方法中调用。