Sie müssen keine Volly-Anforderung bei asynchroner Task ausführen.
Warum:
Sie verwalten alle netzwerkbezogenen Aufgabe auf separaten Thread. Wenn Sie sich das Bibliotheksprojekt genau anschauen, haben sie sich die asynchrone Aufgabe nicht vorgestellt. Aber sie intelligent alle Netzwerkaufgaben effizient behandeln.
prüfen RequestQueue.java Klasse in Volly Haupt Paket
hier ich java doc bin einfügen.
/**
* A request dispatch queue with a thread pool of dispatchers.
*
* Calling {@link #add(Request)} will enqueue the given Request for dispatch,
* resolving from either cache or network on a worker thread, and then delivering
* a parsed response on the main thread.
*/
Edited:
Bildung einer Anfrage:
Mit Volley, Netzwerk-Kommunikation wird durch die Request verwaltet. Die beste Methode, um die RequestQueue und alle ihre Tools, insbesondere den Cache, zu nutzen, besteht darin, sie einmal zu instantiieren und als Singleton beizubehalten. An diesem Punkt können Sie dann Anforderungen hinzufügen oder abbrechen, Anforderungen stoppen oder starten und auf die Antwort-Cache (s) zugreifen.
RequestQueue queue =Volley.newRequestQueue(this);
Sobald die RequestQueue instanziiert wurde, muss eine Anfrage erstellt werden. Dies kann mit ein paar verschiedenen "out of the box" -Anforderungsklassen erfolgen, die in der Volley-Bibliothek enthalten sind, oder indem die Anfrageklasse von Volley in Ihre eigene benutzerdefinierte Anfrage erweitert wird. Die Anforderungsklassen, die bereits in Volley enthalten sind, sind eine String-Anfrage, JSON-Anfragen und eine Bildanfrage. Die meisten der in der Volley-Bibliothek enthaltenen Anforderungsklassen verwenden Konstruktoren ähnlich der folgenden.
Parameter werden in Konstruktor übergeben:
request (get, posten, löschen, ect) * JSONObject * -Ein optional Objekt, das mit Ihrer Anfrage Response veröffentlicht werden - Wohin Ihre Daten gehen, nachdem die Anfrage abgeschlossen ist ErrorListener - Was wird mitgeteilt, wenn ein Problem mit Ihrer Anfrage aufgetreten ist.
JsonObjectRequest request = JsonObjectRequest(Requestmethod, url, null, new ResponseListener(), new ErrorListener());
Listners erhalten Antwort:
erfolgreiche Antwort Listener
private class ResponseListener implements Response.Listener{
@Override
public void onResponse(JSONObject response){
}
}
Error Response Listener
private class ErrorListener implements Response.ErrorListener{
@Override
public void onErrorResponse(VolleyError error){
}
}
Fügen Sie Ihre Anfrage zu Request Queue, Rest von Everything voll wird für Sie behandeln.
machen Aufruf:
Jetzt, dass wir unsere Anfrage und Antwort Klassen haben wir bereit sind, die Anforderung an die Warteschlange hinzuzufügen und die Daten abrufen. Dazu fügen wir die Anfrage einfach der Warteschlange hinzu.
queue.add(request);
Die Antwort oder der Fehler wird dann an die Antwort/Fehlerklassen geliefert, die wir in unserer Anfrage definiert haben. Sie können der Warteschlange so viele Anfragen gleichzeitig hinzufügen, und die Antworten werden an die entsprechenden Antwort-/Fehlerklassen gesendet.
Es geschieht bereits im Hintergrund "asynchron". Sie brauchen * NICHT * AsyncTask' –