I have been trying to figure out this issue for two days now and I am completly stumped. For some reason I am sending one request to the queue but volley is returning it tw
Okay I faced the issue and came up with a solution. In my custom class i created a global variable on top as you can see in below code
MyRequest extends StringRequest {
private boolean mDelivered; //boolean to deliver response only once
then in constructor i initialsed it
public MyRequest(String url, Listener listener,
ErrorListener errorListener, Context ctx) {
super(url, listener, errorListener);
mContext = ctx.getApplicationContext();
mDelivered = false;
DefaultRetryPolicy retryPolicy = new DefaultRetryPolicy(5000, 1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
setRetryPolicy(retryPolicy);
}
and finally i overrided deliverResponse method. For first time mDelivered will be false and once it's delivered it'll be true. if response delivered from cache then cancel network request
@Override
protected void deliverResponse(String response) {
if (!mDelivered) {
mDelivered = true;
cancel(); //if cache delivers response better to cancel scheduled network request
super.deliverResponse(response);
}
}
Hope this helps