我正在使用解压缩过程,我想计算它的进度,这里是计数器的代码:
float counter;
@Override
protected Boolean doInBackground(String... params) {
try {
String zipFile = Path + FileName;
String unzipLocation = Path;
FileInputStream fin = new FileInputStream(zipFile);
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
counter++;
if (ze.isDirectory()) {
dirChecker(ze.getName());
} else {
FileOutputStream fout = new FileOutputStream(Path
+ ze.getName());
while ((length = zin.read(buffer)) > 0) {
fout.write(buffer, 0, length);
}
publishProgress((int)((counter/747.0)*100));
zin.closeEntry();
fout.close();
}
}
zin.close();
} catch (Exception e) {
mProgressDialog.dismiss();
return false;
}
return true;
}
@Override
protected void onProgressUpdate(Integer... values) {
mProgressDialog.setProgress(values[0]);
}
我只有1个.zip文件,其中包含747个文件...这就是我使用数字747的原因 问题是值[0]总是为0 ..我正在计算过程吗?我该怎么做?感谢。
答案 0 :(得分:1)
使用进度中的最后发布值:
mProgressDialog.setProgress(values[values.length - 1]);
可能出现的问题:
values = [0, 1, .... 99]
setMax
和setMin
)