2016-07-21 4 views
0

Ich verwende Volley, um auf meinen REST-Service zuzugreifen. Dies ist, wie mein Code wie folgt aussieht:Volley Request spawns Themen

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); 

Alles funktioniert wie erwartet, aber wenn ich ADV öffnen kann ich sehen, dass fünf neue Themen erstellt, die den Status „Wait“ von Anfang an haben. Diese Threads werden auch nie gelöscht.

Also meine Frage ist: ist das normales Verhalten? Ist es ein Problem für die Leistung meiner App? Denn ich habe den Eindruck, dass es nach einer Weile langsamer wird. Am Ende habe ich mehrere hundert Threads mit dem Status "Wait" in der Liste, bis ich die App wirklich schließe und neu starte.

Antwort

0

Laut source code ist es ein normales Verhalten, weil es einen Thread-Thread direkt nach dem Erstellen einer neuen Anforderungswarteschlange erstellt.

+0

Danke, also würde eine Singleton-Hilfe verwenden? https://developer.android.com/training/volley/requestqueue.html#singleton – gnome

+0

Es hat nichts mit Singleton zu tun. Volley erstellt 5 Threads im Pool, nur um die parallele Anfrage auf effizientere Weise zu erledigen. Du solltest dir darüber keine Sorgen machen. – Divers