Le téléchargement de plusieurs fichiers à la fois dans les applications Android
Je suis en train d'écrire une application pour Android qui permet aux utilisateurs de parcourir une liste de fichiers et les télécharger.
Pour chaque téléchargement, j'ai créé un thread et j'ai télécharger le fichier avec une HttpURLConnection instance (par la lecture de la connexion dans une boucle while).
Cette méthode fonctionne très bien avec un actif de téléchargement. Mais lorsque l'utilisateur commence à plus d'un, télécharger les performances se dégradent considérablement. La plupart du temps, ces téléchargements en parallèle consommer toute la bande passante et les utilisateurs est impossible de parcourir les fichiers (qui utilise un autre HttpUrlConnection pour charger la liste des fichiers).
Des suggestions sur l'amélioration du système de téléchargement?
Merci.
P. S.: La méthode que les navigateurs populaires tels que Google Chrome et Firefox ne semble la bonne. Quelqu'un sait comment ils fonctionnent?
Comment est-ce possible?
Doc: developer.android.com/reference/java/lang/... Exemple: stackoverflow.com/questions/5198518/...
Veuillez utiliser AsyncTask est doInBackground pour obtenir le fichier avec la connexion HTTP au lieu d'utiliser du Fil. je suis sacrément sûr que ça va améliorer les performances
Pourquoi? AsyncTask utilise juste un pool de threads (jusqu'à 10 threads). C'est tout. La création d'un Thread ne sera pas ralentir votre application de manière significative.
OriginalL'auteur Sadjad | 2011-09-27
Vous devez vous connecter pour publier un commentaire.
Hélas, je ne sais pas de manière à limiter certaines connexions. Cependant, une approche pratique serait de mettre en place une file d'attente de téléchargements pour contrôler le nombre de téléchargements simultanés. Dans votre cas, vous auriez probablement souhaitez seulement faire 1 chose à télécharger à la fois. Cela peut être mis en œuvre de différentes manières.
Voici un moyen de le faire avec des Gestionnaires et un Looper: http://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/
Edit 1:
Voir les souris commentaire. Il est peut-être plus intelligent d'avoir un max de 2 threads de téléchargement à la fois.
bon point.
OriginalL'auteur Ian
Vous pourriez vouloir vérifier la
DownloadManager
classe dans le SDK android.. Son seul disponible est supérieur ou égal niveau api 2.3.http://developer.android.com/reference/android/app/DownloadManager.html
Quelques tutoriels que vous souhaitiez voir..
http://jaxenter.com/downloading-files-in-android.1-35572.html
http://www.vogella.de/blog/2011/06/14/android-downloadmanager-example/
OriginalL'auteur Rejinderi