尽管使用了@WorkerThread 注解,为什么我仍然得到 NetworkOnMainThreadException?
Why I still got NetworkOnMainThreadException in spite of using @WorkerThread annotation?
我正在从 @OnClick
呼叫 sendPhoneNumberHandler
,这意味着 NetworkOnMainThreadException
是正常的。
为了处理这个问题,我使用了 @WorkerThread
注释,允许在 UI/Main 线程之外调用 运行 的方法。相比之下我还是得到了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());
}
});
}
有什么线索吗?
使用注释不会使该方法 运行 脱离 UI 线程。只是简单说明这个方法需要在单独的线程中执行
我正在从 @OnClick
呼叫 sendPhoneNumberHandler
,这意味着 NetworkOnMainThreadException
是正常的。
为了处理这个问题,我使用了 @WorkerThread
注释,允许在 UI/Main 线程之外调用 运行 的方法。相比之下我还是得到了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());
}
});
}
有什么线索吗?
使用注释不会使该方法 运行 脱离 UI 线程。只是简单说明这个方法需要在单独的线程中执行