【发布时间】:2013-08-14 21:51:00
【问题描述】:
我正在开发我的第一个 Android 应用程序,它是另一个非常受欢迎的应用程序的缓存清理器。我终于有了检查应用程序缓存的功能,如果存在则将其删除。但是,我为删除文件而设置的异步任务似乎并没有准确地更新进度条。由于我是一名编程 n00b,我的代码主要是来自其他来源的 copypasta。
这是我怀疑有进度条计算问题的块:
@Override
protected Void doInBackground(Void... params) {
// Delete Cache !!
File dir = new File(Environment.getExternalStorageDirectory()
+ "/Android/Data/com.popularapp/Cache");
// Progress Bar
for (int i = 1; i < 100; i++) {
if (isCancelled()) {
break;
} else {
System.out.println(i);
publishProgress(i);
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i2 = 0; i2 < children.length; i2++) {
new File(dir, children[i2]).delete();
}
}
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressBar.setProgress(values[0]);
tvLoading.setText("Loading... " + values[0] + " %");
tvPer.setText(values[0] + " %");
}
【问题讨论】:
-
当您在 for 循环中将“i”打印到控制台时,每次迭代该数字是否准确?
-
我必须弄清楚如何检查控制台是否有这种循环输出,但经过进一步检查,它似乎确实正确计算了每次迭代。顺便说一句,我确实按照建议删除了外循环。
标签: android android-asynctask android-progressbar