2016-07-26 60 views
0

在我的應用程序等待來自多個URL數據,該功能如下:如何獲得和使用排球

  1. 首先我使用的凌空創建JsonObjectRequest。這會返回JSON數據。 在這裏,我使用this技術與回調,以確保我得到的響應,然後進一步處理。

  2. 從上面收到的JSON數據(1)中,我得到了需要獲取更多數據的多個URL。在上面第一個請求的onResponse(1)中,我調用一個方法來創建新的請求隊列,併爲所有這些單獨的URL創建和添加請求。我的最終目標是在獲取此步驟中的所有數據(即多個URL)後顯示數據。

正在發生的事情: 我能夠從取上述(1),並正確顯示數據,但它不等待來自(2)上述步驟下載數據。我想我不能在(1)的請求隊列中的(2)中添加請求,因爲首先我需要來自請求1的URL來請求處理2.

如何在我的應用程序中等待數據下載完成步驟(2)呢?

enter image description here

讓我知道,如果這個問題不明確。我會嘗試添加更多細節。

回答

2

你可以嘗試其中之一......

  1. 檢查 Volley - http request in blocking way,如果你想處理RequestFuture對象 。
  2. 維護一個計數器,一旦所有請求都完成並且計數器被設置爲期望值,您可以進一步處理。像下面這樣:

不知道你是否喜歡這個,但只是一個想法。

call("url", callback(){ 
    ++counter; 
    if(counter == DESIRED_VALUE) 
     displayData(); 
}); 

計數器是的AtomicInteger

+0

謝謝您的回答。但它不能解決我的問題。 RequestFuture阻止應用程序,直到結果可用。我不想那樣!它會影響應用程序的流暢性。 關於櫃檯事情,我不確定它會如何工作。在我的情況下,有兩個不同的請求隊列,第二個隊列應該在第一個隊列完成後啓動。第二個隊列需要有多個請求。我希望我的數據在第二次請求也完成後進行處理。就目前而言,在第一次請求完成後它正在進行! – user846316