Es ist einfach, den Fortschrittsbalkenstatus beizubehalten, wenn ich AysncTask mit Fragmenten Callback verwende, aber wie soll ich es mit Volley erreichen? Ich kann AsyncTask nicht verwenden, weil es veraltet ist und Volley besser und schneller ist. Jede Hilfe oder Tipp wird dankbar sein.
Ich verwende google Volley, um Anfragen zu posten und zu erhalten
Ich denke, es gibt hier Missverständnisse.
Erstens, Volley schneller als AsyncTask.
Hier werden Äpfel und Orangen verglichen. Sie benutzen beide Threads. Volley-Threads sind nicht schneller als die Threads in der asynchronen Task. Die Warteschlangen sind getrennt, aber darum geht es. In API 11 & amp; höher können Sie Ihren eigenen Threadpool für AsyncTask
Instanzen verwenden.
Zweitens, definiere besser.
Volley wurde entwickelt, um eine Menge leichter Payloads (GET / POST) an einen Server zu senden und ziemlich schnelle Antworten zu erhalten. Diese Antworten können dann vom Anrufer verwendet werden.
AsyncTask
wurde entwickelt, um eine bestimmte Aufgabe außerhalb des UI-Threads abzuschließen und verschiedene Rückrufe für den Status dieser Aufgabe bereitzustellen.
Für Ihre ProgressBar
gehe ich davon aus, dass Sie entweder versuchen, den Fortschritt einer Anfrage zu ermitteln, die gerade ausgeführt wird. In der Volley-Welt, da erwartet wird, dass sie winzig sind, haben Sie ziemlich viele Zustände. Not Started, Executing (enthält auch Start Parsing) und Done (bestehend aus Erfolg, Fehler und abgebrochen und so). Wie Sie mit AsyncTask
wissen, gibt es einen Rückruf für onProgress
, wenn Sie publishProgress
verwenden. Ihre Instanz kann also alles, was sie senden möchte, als Fortschrittsanzeige definieren.
Wenn Ihre Nutzlast groß ist und Sie Zeit brauchen, um auf den Server zu wechseln, ist Volley möglicherweise nicht angemessen. Volley macht keine gute Arbeit oder versucht sogar, große Nutzlasten von und zu einem Server zu senden. Der Grund ist, dass dies nicht genau das ist, wofür es bestimmt ist. So wie es erfordert, dass alle Nutzdaten, Upload und Empfang, vollständig in den Speicher passen. Wenn Sie also ein paar Volley-Anfragen haben, die alle eine 1MB-Nutzlast und eine 1MB-Antwort haben, könnten Sie sehen, dass sich das ziemlich schnell aufaddiert.
Volley ist eine großartige Bibliothek, aber überlegen Sie, wofür es empfohlen wird. Lesen Sie die Dokumentation und Implementierung des Codes für weitere Informationen.
Wenn Sie etwas tun, das ziemlich lange dauern wird, würde ich einen spezifischen Anfragetyp schreiben, der Inhalte sendet und streamt. Auf diese Weise können Sie feststellen, wie viel Arbeit mit der Anfrage noch verbleibt. Ich gehe davon aus, dass Sie die gesendeten und empfangenen Bytes als Maßstab für den Fortschritt verwenden.
Es ist eine ziemlich einfache Lösung. Bevor Sie Ihre Volley-Anfrage machen, rufen Sie die Methode progress.show () auf, und rufen Sie dann Ihre Antwort auf: progress.dismiss () Habe das einfach gemacht und es funktioniert großartig!
Es ist sehr einfach, das zu tun ... siehe den folgenden Codeausschnitt
%Vor%Tags und Links android