正如标题所说,我对 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!
话虽如此,删除上述这段代码一切正常,我希望有人能帮我解决它。
任何帮助将不胜感激。真的提前谢谢你!