我的应用程序中有一个活动,它基本上是一个显示我的SD卡上的图片的图库。我正在使用此功能重新安装SD卡,以便在活动开始时扫描新图像:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
事情就是当我这样做时,画廊没有显示更新的图像,因为android需要时间来扫描。所以我在那之后休息等待扫描完成如下:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
这样可以使应用程序暂停2秒钟。有没有更好的方法来处理这个加载对话框?我不确定如何识别SD卡扫描何时完成,以便我可以恢复活动。
答案 0 :(得分:3)
这绝对是一个糟糕的方法。首先,Thread.sleep()
通常应该避免。其次,无法保证扫描已经完成(如果有很多图片或设备速度很慢?)。
更好的方法是异步执行此操作。您可以设置BroadcastReciever
来收听Intent.ACTION_MEDIA_SCANNER_FINISHED
。此意图将包含您之前提供的目录作为数据字段。