2012-06-10 83 views
0

我試圖從互聯網下載圖像列表並將其保存在背景中的SD卡中,其編號爲AsyncTask,此工作正常。Android:下載並保存SD圖像。錯誤,當我嘗試在寫入完成之前嘗試打開文件

另一方面,在主代碼中,我會檢查SD卡上是否存在圖像。如果存在,則在本地加載圖像,如果不加載URL圖像。

問題出現在文件圖像存在但寫入未完成時。在這種情況下,webview加載一個白頁。

我試過這個,但問題是我不知道文件大小,圖像大小不同。

if(file.exists() && file.length() > 18000){ 
    //Load SD file 
} 
else{ 
    //Load url 
} 

有什麼辦法知道文件寫入是否完成?

回答

0

是的,有。

嘗試這種

final int giveUpTimeout = 5; 
new Timer().schedule(new TimerTask() { 
      public void run() { 
       try{ 
        int cc = giveUpTimeout; 
        while (cc > 0) { 
         sleep(1000); // wait 1 sec 
         cc --; 
         if (file.exists() && file.lenght()>0) { 
          ... 
          // LOAD sd FILE  
          return ; // should exit 
          } 
         } 
        // your else   
        ... LOAD URL 
        } 
       catch (Exception e) { e.printStackTrace(); } 
      } 
     }, 
     0); 

bjarn =]

+0

坦克pirataJoe,但是這個代碼引入的時間延遲。我想直接加載網址,如果寫在SD上是不完整的。 – mgabal

+0

確定mgabal,但解決方案在那裏,某處;)。你問了一個方法來檢查文件是否完整,我把它放在一個「file.canWrite」的地方。享受這一點。 ciao – 2012-06-10 18:51:20

+0

和AFAIK,沒有辦法讓你沒有延遲和定時器要求。 – 2012-06-10 19:52:19

相關問題