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
et la méthode qui me permet de dl du net
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Ce code marche bien , mais le problème c'est que ça m'affiche une progress bar par fichier téléchargé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
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
Partager