2014-04-20 1 views
2

J'utilise la bibliothèque Volley pour télécharger des métadonnées pour certains éléments, qui est retourné au format XML. Tout fonctionne comme prévu pour un montant raisonnable d'articles, mais quand ils sont trop nombreux - environ 7000 - l'application à court de mémoire disponible et je reçois cette erreur (pris avec bibliothèque ACRA):Volley OutOfMemoryError causée par MessageQueue complet

03-21 11:08:31.362: E/ACRA(16922): java.lang.OutOfMemoryError 
03-21 11:08:31.362: E/ACRA(16922): at java.lang.String.<init>(String.java:255) 
03-21 11:08:31.362: E/ACRA(16922): at java.lang.String.<init>(String.java:228) 
03-21 11:08:31.362: E/ACRA(16922): at com.android.volley.toolbox.StringRequest.parseNetworkResponse(StringRequest.java:67) 
03-21 11:08:31.362: E/ACRA(16922): at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:121) 

J'ai aussi recevoir des messages de Choreographer se plaignant des images perdues. J'utilise volley pour rendre commun StringRequest s et toutes les demandes sont traitées par un RequestQueue unique. En utilisant Eclipse MAT, j'ai découvert que la majeure partie du tas est occupée par un MessageQueue qui contient toujours l'ancien XML. Bien sûr, cela bloque l'application si je dois effectuer beaucoup (milliers) de demandes.

Comment puis-je vider le MessageQueue?

Répondre

0

Comme Ficus Kirkpatrick lui-même stated, la bibliothèque de volée contient toutes les réponses en mémoire, ce n'est donc pas la meilleure solution pour les réponses multiples et de grande taille.

Je vais bientôt passer à une autre bibliothèque réseau car il semble être la seule solution possible.

EDIT: J'ai finalement trouvé un solution en utilisant retrofit + okhttp!

Questions connexes