Android SDCard安装延迟

问题描述

| 我的应用程序中有一个活动,该活动基本上是一个画廊,其中显示了位于我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
。该意图将包含您先前提供的目录作为数据字段。