就像标题所说的那样,我在loopj的AsyncHttpClient中遇到了一个奇怪的问题。

MyObject是一个包含链接和值的类,而lista是一个包含50个MyObject对象的List。

我需要从50个链接中检索标头信息,因此我进行了如下循环:

private static AsyncHttpClient client;


public MyClass(){
    client = new AsyncHttpClient();
    client.setURLEncodingEnabled(true);
}

....

public void foo(List<MyObject> lista){
    for (final MyObject c : lista) {

        client.head(c.getLink(), new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, org.apache.http.Header[] headers, byte[] responseBody) {

                Log.d("DBG", "retrieving informations");
                int contentlength = Integer.parseInt(headers[3].getValue());
                c.setValue(contentLength);

                Log.d("DBG", "retrivied");

                setView(lista);

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                Log.d("DBG", "retrieving informations failed");
                Log.d("DBG", error.toString());
            }
        });
    }
}


在这一点上,如果我尝试执行该应用程序并查看CatLog,我可以看到在50个请求中仅执行了20个或30个,而其他请求没有给出任何反馈(即,没有超时异常,没有“检索信息”) “调试消息或任何其他类型的消息)。

如果我尝试再次执行该应用程序,则将仅执行大约7或8个请求。

如果我尝试更改代码中的任何内容(例如添加注释)并再次运行它,它甚至无法安装在模拟器上,并出现以下错误:

[2014-03-05 02:46:28 - Myapp] Failed to install MyApp.apk on device 'emulator-5554!
[2014-03-05 02:46:28 - MyApp] (null)
[2014-03-05 02:46:28 - MyApp] Launch canceled!


说完删除上述代码后,其他所有内容都可以正常工作,我希望有人可以帮助我解决它。

任何帮助将不胜感激。
真的要提前谢谢!

最佳答案

我也面临同样的问题。似乎您正在使用loopj的1.4.4版本。他们在github上的1.4.4版本中具有一个已知问题。要解决此问题,您将不得不从https://github.com/loopj/android-async-http的最新大师那里拉扯。
一旦您提取了最新的代码,然后对其进行编译并生成jar文件。然后使用此jar代替v1.4.4 jar。不幸的是,到目前为止,他们尚未在该版本中部署带有此修复程序的最新jar。

经过大量研究,我发现了这个问题。您可以在以下网址上进行检查:
    https://github.com/loopj/android-async-http/issues/455
    https://github.com/loopj/android-async-http/issues/453
    https://github.com/loopj/android-async-http/issues/397
    https://github.com/loopj/android-async-http/issues/398
    https://github.com/loopj/android-async-http/pull/425
    https://github.com/loopj/android-async-http/commit/5ee354db6706562849710b6fcd9b8ec91a3916fd

希望这会帮助你。如果这回答了您的问题或解决了您的问题,请为此+1 :)

10-06 13:46