删除多个java文件时progressBar不会增加

删除多个java文件时progressBar不会增加,java,android,Java,Android,我希望你很好。 我试图在删除路径中的多个文件时增加progressBar,但progressBar在直接达到最大值之前不会增加,有什么问题,我错在哪里 进度条的最大值是95文件大小的路径列表字符串,进度是计数器的增量,希望您能帮助我 这是我使用的代码: FileUtil.listDir("/storage/emulated/0/Alarms/", listStr); progressBar.setMax((int)listStr.size()); for(int i = 0;

我希望你很好。 我试图在删除路径中的多个文件时增加progressBar,但progressBar在直接达到最大值之前不会增加,有什么问题,我错在哪里

进度条的最大值是95文件大小的路径列表字符串,进度是计数器的增量,希望您能帮助我

这是我使用的代码:

FileUtil.listDir("/storage/emulated/0/Alarms/", listStr);
progressBar.setMax((int)listStr.size());
for(int i = 0; i < (int)(listStr.size()); i++) {
    if (FileUtil.isFile(listStr.get((int)(i)))) {
        FileUtil.deleteFile(listStr.get((int)(i)));
        
    }
    new Thread(new Runnable() {
        @Override 
      public void run() {

            progressBar.setProgress((int)i);
        }
    }).start();
}
FileUtil.listDir(“/storage/emulated/0/Alarms/”,listStr);
progressBar.setMax((int)listStr.size());
对于(int i=0;i<(int)(listStr.size());i++){
if(FileUtil.isFile(listStr.get((int)(i))){
FileUtil.deleteFile(listStr.get((int)(i));
}
新线程(newrunnable()){
@凌驾
公开募捐{
progressBar.setProgress((int)i);
}
}).start();
}

您是否尝试了解线程的想法,并在循环的每次迭代中发出
setProgress
?启动多达95个线程(即使它们会很快终止)似乎是错误的方法。为什么是线?我同意安迪的观点。您应该将整个代码块包装在一个线程中,然后使用事件线程更新进度条。请参见此处,了解代码在逻辑上的错误。如果它是在主线程/UiThread中执行的,那么您正试图从一个坏线程中删除95个文件,因为删除是同步任务,可能会冻结用户界面。相反,如果代码已经在一个单独的线程中执行,那么从不同于Main/UiThread的线程管理ProgressBar是错误的,因为只有Main线程可以“接触”可见组件……所以请告诉我们您的cose是在哪个线程中执行的。