Android Volley Caching Asynchronous Requests - How Te Get Url Of The Request In ResponseListener
I have in the app a lot of string requests done in volley. In each module there is a different onResponseListener doing always something different. And I need to make them work als
Solution 1:
So the best solution was to use volley extended: eu.the4thfloor.volleyextended There is updated Response listener, where you get additional boolean changed which means if response is different to last response in cache.
And on error response there is additional parameter response which you can use in case of server or network outtage. Of course if it is cached only.
private class ResponseListenerYYY extends Api.ResponseListener {
@Override
public void onResponse(String response, boolean changed) {
}
@Override
public void onErrorResponse(VolleyError error, String response) {
}
}
Solution 2:
You can create a private variable inside your Listener and then reference it later:
Application.get().getApi().getRequest(url, new ResponseListenerX(url));
private class ResponseListenerX extends Api.ResponseListener {
private String requestedUrl;
public ResponseListenerX(String requestedUrl) {
this.requestedUrl = requestedUrl;
}
@Override
public void onResponse(String response) {
if (response != null) {
}
}
@Override
public void onErrorResponse(VolleyError error) {
if ((error == null || error.networkResponse == null) && url != null) {
// how to get here url from the request
String response = Application.get().getApi().getCache(requestedUrl);
if (response != null && response.length() > 0) {
// onResponse
}
}
}
}
Solution 3:
if you create new listener instances on each request you're unique:
StringRequest request = new StringRequest(Request.Method.GET, url, null,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//...
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//...
}
}
);
Post a Comment for "Android Volley Caching Asynchronous Requests - How Te Get Url Of The Request In ResponseListener"