2014-05-16 21 views
2

我正在嘗試爲我的項目的網絡操作使用Android-Volley項目。如何使用Android Volley進行並行調用

我喜歡this的實現,我在我的項目中使用它。

我有活動,列出用戶和他們的飼料。用戶列表在我的活動和他們的飼料在片段和我無法得到我的請求在片段的響應,我得到這個日誌消息。

W/SingleClientConnManager:無效使用SingleClientConnManager: 連接仍然分配。 確保在分配另一個連接之前釋放連接。

我認爲,這是因爲我使用類型抽射,我已經改變了請求隊列的創建

日誌消息版本:

if (mRequestQueue == null) { 
      // We need this in order to access the cookie store 
      mHttpClient = new DefaultHttpClient(); 
      // create the request queue 
      mRequestQueue = Volley.newRequestQueue(this, new HttpClientStack(mHttpClient)); 
     } 

更改版本:

if (mRequestQueue == null) { 

      mRequestQueue = Volley.newRequestQueue(this); 
     } 

隨着這個改變,我無法得到迴應...

任何幫助將不勝感激。

回答

4
queue = Volley.newRequestQueue(this, new HttpClientStack(client)); 

由於這個原因,我們失去了一個Volley最大的特點,它一次發出多個請求。這是因爲我們包含了一個HttpClient,我們必須遵守它的規則,並在我們引入另一個連接之前關閉一個連接。查看全部解釋:http://captechconsulting.com/blog/clinton-teegarden/android-volley-library-tutorial - 會話餅乾

試試這個:

if (this.mRequestQueue == null) { 

     DefaultHttpClient mDefaultHttpClient = new DefaultHttpClient(); 

     final ClientConnectionManager mClientConnectionManager = mDefaultHttpClient.getConnectionManager(); 
     final HttpParams mHttpParams = mDefaultHttpClient.getParams(); 
     final ThreadSafeClientConnManager mThreadSafeClientConnManager = new ThreadSafeClientConnManager(mHttpParams, mClientConnectionManager.getSchemeRegistry()); 

     mDefaultHttpClient = new DefaultHttpClient(mThreadSafeClientConnManager, mHttpParams); 

     final HttpStack httpStack = new HttpClientStack(mDefaultHttpClient); 

     this.mRequestQueue = Volley.newRequestQueue(this.getApplicationContext(), httpStack); 
} 
+0

的鏈接斷開。 :( –

+0

@PuruPawar,對不起,你可以嘗試使用Retrofit,因爲目前可用的是最好的Android Http庫。有關如何使用的更多內容,我們可以結合使用Retrofit + RxJava並解決大多數線程問題。 –

+0

感謝這個建議,我很清楚Retrofit在Volley上的優勢,但是Volley是Google自己擁有的,我更加熱衷於堅持使用它,此外,Volley仍然快於(50-75%)很好的舊AsyncTasks,這對我來說足夠好。 –

相關問題