我正在使用Volley从服务器获取数据。有时,当网络连接速度很慢时,我会得到两次或三次或更多的响应。我按照Android volley sending data twice中类似问题的答案。但仍然我遇到了同样的问题.Below是我的代码。请帮助我
代码:
public void volley_get_list() {
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
StringRequest stringRequest = new StringRequest(Request.Method.POST, srch_lst_url, new Response.Listener<String>() {
@Override
public void onResponse(String response)
{
Log.e("Response", response);
if(!broadcast_unregister) {
getActivity().unregisterReceiver(broadcastReceiver);
Log.e("BroadcastReceiver", "Unregistered");
broadcast_unregister=true;
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}) {
@Override
protected Map<String, String> getParams() {
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put("search", typed_text);
hashMap.put("latt", lat);
hashMap.put("long", longt);
return hashMap;
}
};
RetryPolicy retryPolicy=new DefaultRetryPolicy(0,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(retryPolicy);
stringRequest.setShouldCache(false);
requestQueue.add(stringRequest);
requestQueue.start();
}
答案 0 :(得分:0)
我希望,如果您删除此代码,它应该有效(requestQueue.start();
),因为添加到请求队列本身会使api命中。
希望这有用:)
答案 1 :(得分:0)
您正在将重试超时时间设置为0秒,这意味着它会在第一次尝试后非常非常快地开始重试尝试,如果您执行此操作时出现错误,我也不会感到惊讶。
int timeout = TimeUnit.SECONDS.toMillis(3);
int maxRetries = DefaultRetryPolicy.DEFAULT_MAX_RETRIES;
int backoffMultiplier = DefaultRetryPolicy.DEFAULT_BACKOFF_MULT;
RetryPolicy retryPolicy = new DefaultRetryPolicy(timeout, maxRetries, backoffMultiplier);
尝试3秒而不是(3000毫秒)