AsyncTask에서 @Subscribe
을 보내 주려고합니다. 나는 Otto 기술 문서를 읽었으며 온라인으로 여러 기사를 읽었을뿐만 아니라 스택에 관해 많은 기사를 읽었으며 그 중 아무 것도 내 문제를 해결하는 데 도움이되지 않는 것 같습니다.Otto.Bus Post 및 @subscribe 사용 중
AsynTask는 완벽하게 호출되며 내 로그에 기록되며 게시 요청에서 응답을받을 수도 있습니다. 또한 나는 다른 질문 및 기술 문서에서 보았 듯이 ototo를 등록하고 등록을 취소하고 있습니다.
나는 SignupActivity에서 해당 PARAMS를 전달하여 내 작업을 실행 :
new SignupTask(SignupActivity.this,
(questionPosition + 1),
response.getEditText().getText().toString(),
FirstName.getEditText().getText().toString(),
LastName.getEditText().getText().toString(),
Mail.getEditText().getText().toString(),
Pass.getEditText().getText().toString(),
"0.0.0.0").execute();
내 SignupTask 다음 비동기 호출한다 : 내가 처리 할 방법을 가지고있는 SignupActivity에 지금
@Override
public Integer call() throws Exception {
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);
client.getAPIInterface().SignUp(new TaskRequests.SignUpRequest(firstNameString,
lastNameString,
email,
pass,
pass),new Callback<String>() {
@Override
public void success(String msg, Response response) {
SignupResponse resp = new SignupResponse();
resp.setMsg(msg);
OttoBusSingleton.getInstance().post(resp);
}
을 @Subscribe를 통해 오토와 함께 :
@Subscribe
public void onSignUpSuccess(SignupResponse event) {
loading.dismiss();
if(!BuildConfig.DEBUG_MODE) {
Log.i(TAG, "!BuildConfig.DEBUG_MODE : " + AnswersAnalytics.SIGN_UP_PATIENT);
Answers.getInstance().logCustom(new CustomEvent(AnswersAnalytics.SIGN_UP));
}
Toast.makeText(this,
event.getMsg(),
Toast.LENGTH_LONG).show();
this.finish();
}
여기에서 나는 Otto 콜백은 SignupActivity에서 성공을 처리하며 중단 점을 배치 할 때 절대 적중되지 않습니다.
수입이 제대로되어 있는지 확인했으며 가능한 해결책을 찾지 못했습니다.
onStart 내가 등록한 것처럼 : otto.register (this); 일부 등록을 해본 후 – Keeano
Btw 등록을 취소하고 Otto 대신 EventBus를 사용해보십시오. 왜냐하면 오토는 더 이상 사용되지 않기 때문입니다. –
아마도'new Bus (ThreadEnforcer.MAIN);'을 사용할 필요가있을 것입니다. AsyncTask에서 이벤트를 보낼 때 이벤트가 UI 스레드가 아닌 다른 스레드에 있기 때문입니다. –