2016-07-21 1 views
0

J'utilise volley pour accéder à mon service REST. Voici comment mon code ressemble à:Volley Demande engendre Threads

StringRequest postRequest = new StringRequest(Method.POST, "http://....", 
    new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      ... 
     } 
    }, 
    new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      ... 
     } 
    } 
) { 
@Override 
protected Map<String, String> getParams() { 
    ... 
} 

@Override 
public Map<String, String> getHeaders() throws AuthFailureError { 
    ... 
}}; 

postRequest.setShouldCache(false); 
Volley.newRequestQueue(context).add(postRequest); 

Tout fonctionne comme prévu, mais quand j'ouvre ADV je peux voir, que cinq nouveaux threads sont créés qui ont le statut « Wait » depuis le début. Ces threads ne sont jamais supprimés. Donc, ma question est la suivante: est-ce un comportement normal? Est-ce un problème pour la performance de mon application? Parce que j'ai l'impression que ça ralentit après un moment. Je finis par avoir plusieurs centaines de threads avec le statut "Wait" dans la liste jusqu'à ce que je ferme vraiment l'application et le redémarre.

Répondre

0

Selon source code, oui, c'est un comportement normal, car il crée un pull de threads juste après la création de votre nouvelle file d'attente de requêtes.

+0

Merci, alors utiliser une aide singleton? https://developer.android.com/training/volley/requestqueue.html#singleton – gnome

+0

Cela n'a rien à voir avec singleton. Volley crée 5 threads dans la piscine juste pour faire des requêtes parallèles de manière plus efficace. Tu ne devrais pas t'inquiéter pour ça. – Divers