我的工作任务是读取SD卡文件,我想在textview上显示所有带位置的SD卡文件但是,我的代码读取成功但是,我找不到解决方案后读取文件时无法更新textview文本runonuithread但是,它也没有工作。我的代码如下所示:
public void scan (final File path) {
try
{
for (final File f : path.listFiles()) {
if (f.isFile()) {
scannedfiles=scannedfiles+1;
progresspercentage=scannedfiles*100/FilesCount;
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
lbl_scan.setText("SCANING:"+f.getAbsolutePath());\\first time only change text after didn't change
Toast.makeText(getApplicationContext(),"Files:"+f.getAbsolutePath(),Toast.LENGTH_SHORT).show();
}
});
}
else {
if(!f.getName().equals("Android"))
{
scan(f);
}
}
}
}
catch (Exception e)
{
}
}
我在代码下面调用扫描功能:
File root = new File (Environment.getExternalStorageDirectory().getAbsolutePath());
scan(root);
任何人都可以帮助我。
答案 0 :(得分:2)
您可能正在UI线程上调用扫描!如果整个UI在操作期间阻塞,这应该是显而易见的。
尝试:
new Thread() {
public void run() {
scan(root);
}
}.start();