2014-02-28 26 views
5

.add(新的網絡調用我的排球請求隊列,我建議作爲單身人士建議。但我總是立即.start()這些網絡電話。這總是作爲活動或片段中的動作完成的。如何使用Volley網絡請求隊列?

add方法,甚至不能被鏈接到一個start方法,像.add(new volley request).start()

所以這個假設我實際管理(或想要管理)的網絡隊列的地方,凌空處理其隊列的方式外,我猜測。我應該將這些事情發送到IntentService並監聽IntentService以將響應發回我的Fragment/Activity?

回答

7

作爲一個排他用戶,我可以告訴你,我從來沒有調用.start()方法。所有我添加到隊列中的請求都會自動啓動,我像你一樣使用單例類,您可以檢查此tutorial以獲取更多信息(因爲Google沒有提供太多內容)。

+0

有意思,所以'queue'是'start'。這就解釋了爲什麼我的一些斷點被觸發兩次'onResponse' – CQM

+0

也許,請不要使用.start(),看看是否一切順利,並且希望有一天Google可以提供完整的API文檔。它工作的很好,但你需要自己調查一切:) –

+0

我注意到,我幾乎擴展了所有的網絡方法使用'GSON'和'Oauth2' – CQM

8

如果你創建一個requestQueue爲:

requestQueue = Volley.newRequestQueue(mAppContext); 

你將不再需要start()

根據文檔Volley.RequestQueue:「創建工作池的默認實例並調用RequestQueue.start()」。

因此,你可以看到你爲什麼不需要自己打電話start()

但是,如果你創建一個requestQueue的(如圖所示official reference):

RequestQueue mRequestQueue; 

// Instantiate the cache 
Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap 

// Set up the network to use HttpURLConnection as the HTTP client. 
Network network = new BasicNetwork(new HurlStack()); 

// Instantiate the RequestQueue with the cache and network. 
mRequestQueue = new RequestQueue(cache, network); 

// Start the queue 
mRequestQueue.start(); 

start()將不得不被調用。 PS:我得到了源代碼本身提供的文檔。 IDE可以毫不費力地提取它們。我只是將鼠標懸停在需要其文檔的方法/類名上,然後按CTRL(在android-studio中)。