2016-03-01 39 views
1

我必須用排球打兩個電話。我的問題是,我需要完成第一個電話,然後是第二個電話。這些調用位於for循環中。所以我把第一個電話​​和第二個Priority.LOW。但有時候第二個調用是在第一個調用之前完成的,而我沒有從第一個調用中需要的數據。我錯過了什麼?排球優先權不能正常工作

for (int i = 0; i < SiteData.getSites().size(); i++) { 
      firstCall(); 
      secondCall(); 
    } 

firstCall方法

private void firstCall(){ 
    JsonObjectRequest siteDataRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      // do something with json 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d(membership_id_tag, error.getMessage()); 
     } 
    }) 

    { 
     @Override 
     public Priority getPriority() { 
      return Priority.IMMEDIATE; 
     } 
    }; 
    AppController.getInstance().addToRequestQueue(siteDataRequest, membership_id_tag); 
} 

secondCall方法

private void secondCall(){ 
    JsonArrayRequest pagesRequest = new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() { 
     @Override 
     public void onResponse(JSONArray response) { 
      // do something with json 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d(membership_page_tag, error.getMessage()); 
     } 
     }) 

     { 
      @Override 
      public Priority getPriority() { 
      return Priority.LOW; 
      } 
     }; 
     AppController.getInstance().addToRequestQueue(pagesRequest, membership_page_tag); 
} 

我必須做出一個循環,並在其他第二的第一個電話?

+1

在我看到的第一個 –

+1

的迴應中做出第二個電話......我只是想避免這種情況,因爲它會太複雜,但它是唯一的方法 –

+0

我不確定,但我有一個預感它可能因爲你正在使用2個不同的請求隊列,json obj和json數組,因此優先級可能不工作 –

回答

2

嘗試在響應中進行服務調用,如果第一個,也是優先級可能發生,因爲有2個不同的請求隊列正在使用。

+0

我對第一個響應進行了第二次調用,現在它正在工作:) –

+0

謝謝你編碼愉快 –