2010-11-14 5 views
1

Lorsque je télécharge un fichier à partir du Web dans Android, je veux afficher une barre de progression dans la zone de notification de la barre d'état via le service, mais je ne suis pas en mesure de le faire. Comment puis-je le faire? Je ne suis pas en mesure de transmettre la longueur du fichier en service. Je donne l'URL dans EditText, et je clique sur le bouton Télécharger. Après le clic Une classe sera appelée sur l'écouteur de clic, cette classe a une fonction. Dans cette fonction je fais le traitement ou la fonctionnalité de téléchargement, maintenant je veux montrer la barre de progression dans le service de notification par zone, mais je ne peux pas faire cela. Aidez-moi, s'il vous plaît. Merci d'avance.Téléchargement de fichier dans Android avec service en arrière-plan

Répondre

1

Ce devrait être le service qui télécharge le fichier, pas l'activité (comme je comprends que vous le faites maintenant). Lorsque le service fini notifiera l'activité et (éventuellement) passera le résultat. Dans ce cas, vous pourrez mettre à jour la barre de progression des notifications et continuer à interagir avec un utilisateur.

2
  1. Vous ne devez pas exécuter de code réseau (ou tout code de blocage/de longue durée) dans les gestionnaires d'événements. Cela bloque le thread principal (l'EDT) et rend l'application ne répond pas, en produisant éventuellement ANR. Vous devez utiliser AsyncTask. Pour afficher une notification, il suffit de créer un new Notification(..) puis d'appeler le NotificationManager.notify(). Vous pouvez en toute sécurité créer notification AsyncTask.onPreExecute() méthode, et les mettre à jour à partir de la méthode AsyncTask.doInBackground() en appelant publishProgress(..)

Un exemple ProgressBar in Notification Area. Vous devez utiliser ceci dans AsyncTask comme décrit dans 2.

Questions connexes