2012-07-19 42 views
1

我試圖在活動顯示後運行一些腳本,我從網絡加載一些圖像並動態地在活動中顯示它們。我正在運行多個runnables,每個可運行的調用一個Asynctask(閱讀圖像並分配給ImageView,圖像視圖是在onCreate函數中創建的),但只有在所有可運行的asynctasks完成後纔會顯示活動。顯示活動後執行代碼

我希望你能幫助我實現這一點,我所看到的是顯示活動,然後一個接一個地加載和顯示圖像。

public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 

    if (!hasFocus) 
     return; 
    Handler h = new Handler(); 
    Runnable[] r; 
    int i = 0; 
    r = new Runnable[files.length]; 
    for (i = 0; i < files.length; i++) { 
     final int j = i; 
     r[i] = new Runnable() { 
      public void run() { 
       ViewGroup vg = (ViewGroup) findViewById(R.id.RootView); 

       Log.v("ASYNC", "Starting Call " + j); 
       // new BitmapWorkerTask().execute(img, i); 
       new BitmapWorkerTask(img, j).execute(); 
       vg.invalidate(); 
      } 
     }; 
     h.post(r[i]); 
     Log.v("ASYNC", "Posted " + i); 
    } 
    return; 
}; 
+0

有多少圖像?我可能傾向於產生一個AsyncTask來一個接一個地檢索圖像。 – barry 2012-07-19 22:46:17

+0

使用一個AsyncTask,你可以使用publishProgress()來更新剛下載的圖像的UI, – barry 2012-07-20 12:21:24

回答

0

onWindowFocusChanged(boolean hasFocus)不是Activity生命週期方法。相反,您應該使用onCreate來解除您的任務。如果加載需要很長時間,則可以顯示某種進度微調器。