android 删除文件进度,android – 从SD卡中删除文件夹时的“旋转轮”进度对话框...

在Android中,当从SD卡删除文件夹时,通过在单独的线程中执行删除操作,可以解决ProgressDialog不显示的问题。原始代码由于在主线程执行导致ProgressDialog无法及时显示。通过创建新线程并在删除操作完成后利用Handler关闭ProgressDialog,实现了对话框的正确显示和关闭。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想用旋转轮显示简单的进度对话框,同时从SD卡中删除文件夹.我有一段代码:

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)之前显示对话框;结束后将其解散.但是我没有看到任何对话框,但是文件夹被删除了.

解决方法:

像这样修改你的代码,

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();

}

}

};

我不确定为什么会这样.由于您的代码在单个线程中执行所有操作,因此progressdialog不会快速显示.因此,尝试在单独的线程中处理其他事情来处理此问题.

标签:android,progressdialog

来源: https://codeday.me/bug/20191002/1843968.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值