Wie verhindert man UI-Verzögerung beim Aktualisieren der Benachrichtigung beim Herunterladen der Datei?

8

Ich verwende derzeit AsyncTask , um eine große Datei im Hintergrund innerhalb meiner App herunterzuladen. Derzeit wird der Download-Fortschritt als ProgressDialog angezeigt, der über onProgressUpdate wie folgt aktualisiert wird:

%Vor%

Das funktioniert gut, aber ich möchte jetzt eine Benachrichtigung in der Benachrichtigungsleiste verwenden, also behalten Sie den Überblick über den Download (da die Datei ziemlich groß sein kann und Benutzer von außerhalb der App den Überblick behalten möchten).

>

Ich habe den folgenden Code ausprobiert, aber die Benutzeroberfläche beginnt schlecht zu laufen. Ich kann sehen, dass die publishProgress sehr oft aufgerufen wird. Wie also könnte ich den Hintergrundcode ändern, um publishProgress nur jede Sekunde %Vor%     

Zac Powell 27.06.2013, 14:16
quelle

2 Antworten

14
  

Wie könnte ich also den Hintergrundcode ändern, um publishProgress nur jede Sekunde aufzurufen?

Ich habe das schon einmal für eine Upload-Funktion gemacht, die% in Notification zeigte, aber genau die gleiche Idee. Lassen Sie Ihre AsyncTask verfolgen, was percentDone der Download ist, und NUR rufen Sie publishProgress auf, wenn sich percentDone ändert. Auf diese Weise rufen Sie immer nur publishProgress auf, wenn sich der heruntergeladene% ändert, und der Notification muss daher aktualisiert werden. Dies sollte die UI-Verzögerung auflösen.

Ich habe dies als meine vorgeschlagene Implementierung geschrieben, hört sich an, als ob das OP es bereits funktionierte. Aber vielleicht hilft das einem anderen in der Zukunft:

%Vor%     
Steven Byle 27.06.2013, 14:32
quelle
0

Ich mochte deine Herangehensweise sehr! Ich habe festgestellt, dass die Aktualisierung meines Fortschrittsbalkens korrekt ist, wenn ich den Code in den folgenden geändert habe. Ich hatte einige Probleme bei der Verwendung von math.round ().

%Vor%     
bezman 16.04.2014 10:49
quelle

Tags und Links