web-dev-qa-db-fra.com

Désactiver la gestion du cache Volley

Existe-t-il un moyen de désactiver la gestion du cache Volley? Mon application utilise la bibliothèque Google Volley pour gérer la couche de transport, mais j'ai ma propre implémentation de gestionnaire de cache car le serveur n'utilise pas l'en-tête Cache-Control. Je veux économiser l'espace utilisé par le cache Volley car il est totalement inutile.

Existe-t-il un moyen simple? ou dois-je implémenter ma propre version de RequestQueue?

Toute suggestion appréciée.

27
Proverbio

Si vous utilisez l'une des classes Request par défaut implémentées dans volley (par exemple, StringRequest, JsonRequest, etc.), appelez alors setShouldCache (false) juste avant d'ajouter l'objet request à la volley RequestQueue:

request.setShouldCache(false);
myQueue.add(request);

Si vous avez votre propre implémentation de la classe Request, vous pouvez alors appeler setShouldCache (false) dans le constructeur de votre classe.

Cette solution désactive la mise en cache pour chaque demande individuellement. Si vous souhaitez désactiver la mise en cache globalement à partir de la bibliothèque de volley, vous pouvez définir définitivement la variable mShouldCache sur false dans la classe Request.

69
Hungry Coder

Vous pouvez créer votre RequestQueue à partir du constructeur et passer un objet NoCache comme premier paramètre. Le deuxième paramètre est un transport réseau basé sur votre choix de AndroidHttpClient ou HttpURLConnection.

RequestQueue queue = new RequestQueue(new NoCache(), new BasicNetwork(new HurlStack()));

Pour plus de détails voir cette documentation .

Selon la documentation, BasicNetwork est l'implémentation réseau par défaut de Volley.

11
Anor
request.setShouldCache(false);

ne semble pas être suffisant pour les requêtes GET. cependant, vider le cache avant d'ajouter à la file d'attente semble aider

myRequestQueue.getCache().clear();

Je mets cela dans ma méthode getRequestQueue() dans mon singleton Volley. avant de retourner la file d'attente.

7
Versa