Gelöschter Account
- Forum-Beiträge: 136
18.04.2011, 13:14:07 via Website
18.04.2011 13:14:07 via Website
Hallo zusammen,
folgender Code:
Hier werden Dateien aus einem zip Archiv entpackt. Hier soll nun ein ProgressDialog angezeigt werden, der den Fortschritt immer weiter anzeigt. An sich klappt das auch wunderbar nur einmal ist er zu langsam, dh. die Dateien sind alle entpackt aber der Balken ist nicht ganz durch gelaufen, oder er ist zu schnell und rennt sofort durch. Nun ist meine Frage, wo muss ich das "myProgress++" und die Ausgabe richtig hinsetzen, damit er richtig zählt? Oder kann ich mir irgentwie die länge in Prozent ausgeben und er zählt den Prozentualen Fortschritt?
So wie es jetzt in dem Code ist, ist er zu schnell.
Grüße,
Malte
folgender Code:
1protected Void doInBackground(Void... arg0) {
2 // TODO Auto-generated method stub
3
4 String zipFile = Environment.getExternalStorageDirectory() + "/pano.zip";
5 final String unzipLocation = Environment.getExternalStorageDirectory() + "/panoramen/";
6 File f = new File(unzipLocation);
7
8 if(!f.isDirectory()) {
9 f.mkdirs();
10 }
11
12 try {
13 FileInputStream fin = new FileInputStream(zipFile);
14 ZipInputStream zin = new ZipInputStream(fin);
15 ZipEntry ze = null;
16 while ((ze = zin.getNextEntry()) != null) {
17
18 FileOutputStream fout = new FileOutputStream(unzipLocation + ze.getName());
19 for (int c = zin.read(); c != -1; c = zin.read()) {
20 fout.write(c);
21 myProgress++;
22 publishProgress(myProgress);
23 }
24 zin.closeEntry();
25 fout.close();
26 }
27 zin.close();
28 } catch(Exception e) {
29 Log.e("Decompress", "unzip", e);
30 }
31 return null;
32 }
33 @Override
34 protected void onProgressUpdate(Integer... values) {
35 // TODO Auto-generated method stub
36 progressBar.setProgress(values[0]);
37 }
2 // TODO Auto-generated method stub
3
4 String zipFile = Environment.getExternalStorageDirectory() + "/pano.zip";
5 final String unzipLocation = Environment.getExternalStorageDirectory() + "/panoramen/";
6 File f = new File(unzipLocation);
7
8 if(!f.isDirectory()) {
9 f.mkdirs();
10 }
11
12 try {
13 FileInputStream fin = new FileInputStream(zipFile);
14 ZipInputStream zin = new ZipInputStream(fin);
15 ZipEntry ze = null;
16 while ((ze = zin.getNextEntry()) != null) {
17
18 FileOutputStream fout = new FileOutputStream(unzipLocation + ze.getName());
19 for (int c = zin.read(); c != -1; c = zin.read()) {
20 fout.write(c);
21 myProgress++;
22 publishProgress(myProgress);
23 }
24 zin.closeEntry();
25 fout.close();
26 }
27 zin.close();
28 } catch(Exception e) {
29 Log.e("Decompress", "unzip", e);
30 }
31 return null;
32 }
33 @Override
34 protected void onProgressUpdate(Integer... values) {
35 // TODO Auto-generated method stub
36 progressBar.setProgress(values[0]);
37 }
Hier werden Dateien aus einem zip Archiv entpackt. Hier soll nun ein ProgressDialog angezeigt werden, der den Fortschritt immer weiter anzeigt. An sich klappt das auch wunderbar nur einmal ist er zu langsam, dh. die Dateien sind alle entpackt aber der Balken ist nicht ganz durch gelaufen, oder er ist zu schnell und rennt sofort durch. Nun ist meine Frage, wo muss ich das "myProgress++" und die Ausgabe richtig hinsetzen, damit er richtig zählt? Oder kann ich mir irgentwie die länge in Prozent ausgeben und er zählt den Prozentualen Fortschritt?
So wie es jetzt in dem Code ist, ist er zu schnell.
Grüße,
Malte
— geändert am 18.04.2011, 13:15:18
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.