2011-05-27 76 views
2

我在我的应用程序中有一个活动,它基本上是一个画廊,显示位于我的SD卡上的图片。我使用这个功能来重新安装SD卡扫描新的图像的活动开始时:Android SDCard安装延迟

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));  

的事情是,当我做到这一点的画廊不显示更新的图像作为机器人需要时间来扫描。所以我睡了之后,等待扫描完成像这样:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));  

    try { 
     Thread.sleep(2000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 

这种工作,但使应用程序暂停2秒。有没有更好的方法来通过加载对话框来处理这个问题?我不确定如何识别SD卡扫描何时完成,以便我可以恢复活动。

回答

3

这绝对是一个不好的方法。首先,Thread.sleep()是通常应该避免的。其次,无法确定扫描是否完成(如果有很多照片或慢速设备?)。

更好的方法是异步执行此操作。您可以设置BroadcastReciever来收听Intent.ACTION_MEDIA_SCANNER_FINISHED。这个意图将包含您之前提供的作为数据字段的目录。