Skip to content Skip to sidebar Skip to footer

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.

privateclassResponseListenerYYYextendsApi.ResponseListener {
    @OverridepublicvoidonResponse(String response, boolean changed) {

    }

    @OverridepublicvoidonErrorResponse(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, newResponseListenerX(url));

privateclassResponseListenerXextendsApi.ResponseListener {
        privateString requestedUrl;

        publicResponseListenerX(String requestedUrl) {
            this.requestedUrl = requestedUrl;
        }

        @OverridepublicvoidonResponse(String response) {
            if (response != null) {


            }
        }

        @OverridepublicvoidonErrorResponse(VolleyError error) {

            if ((error == null || error.networkResponse == null) && url != null) {

                // how to get here url from the requestString 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 = newStringRequest(Request.Method.GET, url, null, 
    newResponse.Listener<String>() {
        @OverridepublicvoidonResponse(String response) {
          //...
        }
    }, newResponse.ErrorListener() {
       @OverridepublicvoidonErrorResponse(VolleyError error) {
         //...
       }
    }
);

Post a Comment for "Android Volley Caching Asynchronous Requests - How Te Get Url Of The Request In Responselistener"