排球优先权无法正常工作
Volley priority doesn't work properly
我必须用凌空打两个电话。我的问题是我需要完成第一个电话,然后是第二个电话。这些调用在 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);
}
我是否必须在一个循环中进行第一个调用,而在另一个循环中进行第二个调用?
尝试在响应中执行服务调用,如果是第一个,优先级也可能会发生,因为正在使用 2 个不同的请求队列。
我必须用凌空打两个电话。我的问题是我需要完成第一个电话,然后是第二个电话。这些调用在 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);
}
我是否必须在一个循环中进行第一个调用,而在另一个循环中进行第二个调用?
尝试在响应中执行服务调用,如果是第一个,优先级也可能会发生,因为正在使用 2 个不同的请求队列。