2011-05-27 73 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。這個意圖將包含您之前提供的作爲數據字段的目錄。