2016-03-01 40 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

谢谢你编码愉快 –