Progress bar et asynchtask
Bonsoir,
J'ai une application qui me permet de télécharger des fichiers sur le net , qui affiche la progression du dl dans une progressbar
Je gère ce processus par un asyntask
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| private class DownloadImgs extends AsyncTask<Void, String, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(progress_bar_type);
}
@Override
protected Void doInBackground(Void ...params) {
for(GetCountry gc : listCountry){
getFilesToDownload(gc.getUrl());}
return null;
}
protected void onProgressUpdate(String... progress) {
pDialog.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void onPostExecute(Void result) {
dismissDialog(progress_bar_type);
} |
et la méthode qui me permet de dl du net
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| public void getFilesToDownload(String url)
{
int count;
try {
URL urlImg = new URL(url);
URLConnection connection = urlImg.openConnection();
connection.connect();
int lenghtOfFile = connection.getContentLength();
InputStream input = new BufferedInputStream(urlImg.openStream());
OutputStream output = new FileOutputStream(folder+"/"+name);
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress(""+(int)((total*100)/lenghtOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {
e.getMessage();
}
} |
Ce code marche bien , mais le problème c'est que ça m'affiche une progress bar par fichier téléchargé...
Or je voudrais avoir seulement une progress bar pour tous les fichiers téléchargés.
Le souci provient surement de la valeur maximale de la progress bar(100 par défaut) qui va récréer à chaque fois une autre progress bar si on dépasse 100. Seulement je ne vois pas comment régler le problème car je connais pas à l' avance la taille totale de tous les fichiers à télécharger(logique)
Merci de votre aide