我必须打凌空打两个电话。我的问题是,我需要先完成第一个电话,然后再进行第二个电话。调用在for循环上。所以我打了第一个电话Priority.IMMEDIATE,然后打了第二个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);
}


我是否必须在循环上进行第一个调用,然后在另一个上进行第二个调用?

最佳答案

如果是第一个响应,则尝试在响应中进行服务调用,因为存在两个不同的请求队列,因此优先级可能正在发生。

10-04 10:13