我使用 Ion 来处理我的请求,然后我使用它的onCompleted
回调处理响应。
我的问题是应用程序在完成此回调中应做的事情之前完全冻结。没有崩溃,没有错误,什么都没有。它只是冻结。
调试时,它永远不会在冻结后运行下一行代码。我尝试删除我的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);
}
很抱歉代码不准确,我不能发布真实的东西。但是实际的代码遵循上面相同的结构,它应该给你们一个想法。
我很难弄清楚这个问题。它看起来像一个线程问题,但由于 Ion 异步工作,它不应该冻结应用程序。