【发布时间】:2016-08-12 16:05:23
【问题描述】:
我从@OnClick 打电话给sendPhoneNumberHandler,这意味着得到NetworkOnMainThreadException 是正常的。
为了处理这个问题,我使用了@WorkerThread 注释,它允许方法调用在 UI/主线程之外运行。相比之下,我还是得到了NetworkOnMainThreadException。
@WorkerThread
public void sendPhoneNumberHandler(final Context context, String phoneNumber) {
MonoApplication application = MonolApplication.get(phoneNumberMvpView.getContext());
rx.Observable<HeaderResponse> checkPhoneNumber =
application.getMonolService(Constants.monolAPIUrl).checkPhoneNumber(phoneNumber);
subscription = checkPhoneNumber.subscribe(new Observer<HeaderResponse>() {
@Override public void onCompleted() {
}
@Override public void onError(Throwable e) {
phoneNumberMvpView.onPhoneNumberSendResult(false, 0);
}
@Override public void onNext(HeaderResponse s) {
phoneNumberMvpView.onClearText();
phoneNumberMvpView.onPhoneNumberSendResult(true, s.getError());
}
});
}
有什么线索吗?
【问题讨论】:
-
你应该把你的方法放在一个 AsyncTask 中。
-
我错过了订阅 IO 线程 (
subscribeOn(Schedulers.io()))
标签: java android networkonmainthread