2011-07-18 78 views
0

同時加載一個像我現在有一個使用的AsyncTask類,使Web服務調用的UI。這個調用會獲取多張圖片並將它們存儲在一個HashMap中。然後通知用戶界面,並使用這些圖像創建用戶界面。但是,這有時需要10-15秒,這很煩人。有沒有辦法用後臺服務一次填充一張圖片,以便用戶開始以比目前更快的速度查看圖片?如何在Android UI線程

謝謝。

回答

2

這裏是如何做到這一點粗略的例子:

public Void doInBackground(String... urls) { 
    int len = urls.length; 
    for(int i = 0; i < len; ++i) { 
     Bitmap b = downloadImage(urls[i]); 
     publishProgress(new Object[] {b, i}); 
    } 
    return null; 
} 

public void onProgressUpdate(Object... values) { 
    Bitmap b = (Bitmap)values[0]; 
    Integer bitmapIndex = (Integer)values[1]; 
    //replace the image at location "bitmapIndex" in your collection of images with "b" 
    //update your adapter via notifyDataSetChanged 
} 

使用AsyncTaskonProgressUpdate方法來發布內部doInBackground進展。此方法(onProgressUpdate)在UI線程上運行。

+0

非常感謝。就在我面前。 –

1

我不知道你是否意識到這一點,但爲了以防萬一,一個AsyncTaskonProgressUpdate功能,你可以用它來在UI線程上執行操作,AsyncTask與調用onPostExecute之前結束。從doInBackground方法只需撥打publishProgress與相關的參數。