Ion을 사용하여 요청을 처리 한 다음 onCompleted
콜백을 사용하여 응답을 처리합니다.Ion의 완료 콜백 내에서 앱이 종료 됨
내 문제는 앱이이 콜백 내부의 작업을 완료하기 전에 완전히 정지된다는 것입니다. 오류가 발생하지 않고 오류도 없습니다. 그냥 얼뿐입니다.
디버깅 할 때 코드가 고정 된 후 다음 코드 행을 실행하지 않습니다. 내 handleResponse
메서드 내에서 모든 코드를 제거하려고했지만 다른 지점에서 여전히 고정되어 있습니다. 여기
private void performSync() {
Ion.with(mContext.get())
.load(API_URL)
.setHeader("Content-Type", "application/json")
.setStringBody(json)
.asString()
.setCallback(new FutureCallback<String>() {
@Override
public void onCompleted(Exception e, String result) {
// Some code to map response.
...
// Freezes inside this method.
handleResponse(myResponse);
// Freezes here if I remove the above code.
myService.sendBroadcast(MY_ACTION);
}
});
}
private void handleResponse(Object myResponse) {
// Do something with my response (extract a list from it).
...
// Process data.
for (Object object : listFromResponse) {
// Do stuff with the objects. Works fine until the very last object.
}
// Freezes before this line. It never gets here.
PreferenceUtils.saveStringPreference(MY_PREFERENCE, someValue);
}
나는 부정확 한 코드에 대한 미안 해요, 내가 진짜를 게시 할 수 없습니다. 그러나 실제 코드는 위와 같은 구조를 따르므로 사람들에게 아이디어를 제공해야합니다.
이 문제를 파악하는 데 어려움을 겪고 있습니다. 스레딩 문제인 것처럼 보이지만 이온은 비동기 적으로 작동하기 때문에 앱을 정지시키지 않아야합니다.
당신 말이 맞아요, 그것이 콜백 이었다는 것이 밝혀졌습니다. 모든 코드를 새 스레드에 넣으면 이제 작동합니다. 나는 이것을 처음부터하지 않았기 때문에 약간 바보 같다. 도와 주셔서 감사합니다. –