应用程序在Ion的完成回调中冻结

时间:2014-11-12 21:20:46

标签: android freeze ion

我正在使用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异步工作,它不应该冻结应用程序。

1 个答案:

答案 0 :(得分:1)

应用程序冻结了您的代码(回调),而不是Ion。我不知道你在做什么,但是在调试器中逐步进入方法并找出究竟是什么。

尝试评论代码,直到它停止冻结。这可能是找到违规行的最简单方法。