2014-03-05 33 views
2

正如標題所說,我對loopj的AsyncHttpClient存在一個奇怪的問題。調用大量的Android loopj AsyncHttpClient HEAD請求,只是其中的一個隨機數正在執行

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()); 
      } 
     }); 
    } 
} 

在這一點上,如果我嘗試執行的是應用程序,看看目錄下載,我可以看到在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! 

如此說來去除前面提到的一段代碼其他一切正常,我希望有人能幫我解決它。

任何幫助將被認可。 真的很感謝你提前!

回答

2

我面臨同樣的問題。看來你正在使用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這個:)

相關問題