由网友(亮瞎你的小眼睛)分享简介:我要显示简单的进度与转轮对话框,而从SD卡中删除的文件夹。我有下面这段code:I want to display simple progress dialog with rotating wheel, while deleting folder from SD card. I have a following pi...
我要显示简单的进度与转轮对话框,而从SD卡中删除的文件夹。我有下面这段code:
I want to display simple progress dialog with rotating wheel, while deleting folder from SD card. I have a following piece of code:
ProgressDialog dialog = ProgressDialog.show(this, "",
"Please wait for few seconds...", true);
private void deleteCache() {
File f = new File(Environment.getExternalStorageDirectory()
.getAbsoluteFile() + Constants.DATA_DIR);
deleteDirectory(f);
dialog.dismiss();
}
private void deleteDirectory(File path) {
if (path.exists()) {
File[] files = path.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
deleteDirectory(files[i]);
} else {
files[i].delete();
}
}
}
return (path.delete());
}
这是为了显示前 deleteDirectory(F)对话框;
和dissmis它是结束之后。但我从来没有看到任何对话框,事件虽然该文件夹被删除。
Which is supposed to show dialog before deleteDirectory(f);
and dissmis it after it ends. But I never see any dialog, event though the folder is being deleted.
推荐答案
修改您的code这个样子,
Modify your code like this,
ProgressDialog dialog = ProgressDialog.show(this, "",
"Please wait for few seconds...", true);
new Thread(new Runnable() {
public void run() {
File f = new File(Environment.getExternalStorageDirectory()
.getAbsoluteFile() + Constants.DATA_DIR);
deleteDirectory(f);
private void deleteDirectory(File path) {
if (path.exists()) {
File[] files = path.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
deleteDirectory(files[i]);
} else {
files[i].delete();
}
}
}
return (path.delete());
}
handler.sendEmptyMessage(0);
}
}).start();
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
try {
progressDialog.dismiss();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
};
我不知道为什么会这样。由于您的code做一切在一个单独的线程,progressdialog不会很快出现。因此,而不是试图处理其他的事情在一个单独的线程处理这个问题。
I am not sure why this happens. Since your code does everything in a single thread, progressdialog will not show up quickly. So instead trying to handle other things in a separate thread handles this problem.
相关推荐
最新文章