问题描述
|
我的应用程序中有一个活动,该活动基本上是一个画廊,其中显示了位于我sdcard上的图片。我正在使用此功能来重新安装sdcard,以便在活动开始时扫描新图像:
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秒钟。是否有更好的方法通过放置加载对话框来解决此问题?我不确定如何识别sdcard扫描何时完成,以便恢复活动。
解决方法
这绝对是一个不好的方法。首先,通常应避免
Thread.sleep()
。其次,无法保证扫描已完成(如果有很多照片或设备速度慢怎么办?)。
更好的方法是异步执行此操作。您可以设置BroadcastReciever
收听Intent.ACTION_MEDIA_SCANNER_FINISHED
。该意图将包含您先前提供的目录作为数据字段。