同時加載一個像我現在有一個使用的AsyncTask類,使Web服務調用的UI。這個調用會獲取多張圖片並將它們存儲在一個HashMap中。然後通知用戶界面,並使用這些圖像創建用戶界面。但是,這有時需要10-15秒,這很煩人。有沒有辦法用後臺服務一次填充一張圖片,以便用戶開始以比目前更快的速度查看圖片?如何在Android UI線程
謝謝。
同時加載一個像我現在有一個使用的AsyncTask類,使Web服務調用的UI。這個調用會獲取多張圖片並將它們存儲在一個HashMap中。然後通知用戶界面,並使用這些圖像創建用戶界面。但是,這有時需要10-15秒,這很煩人。有沒有辦法用後臺服務一次填充一張圖片,以便用戶開始以比目前更快的速度查看圖片?如何在Android UI線程
謝謝。
這裏是如何做到這一點粗略的例子:
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
}
使用AsyncTask
的onProgressUpdate
方法來發布內部doInBackground
進展。此方法(onProgressUpdate
)在UI線程上運行。
我不知道你是否意識到這一點,但爲了以防萬一,一個AsyncTask
有onProgressUpdate
功能,你可以用它來在UI線程上執行操作,AsyncTask
與調用onPostExecute
之前結束。從doInBackground
方法只需撥打publishProgress
與相關的參數。
非常感謝。就在我面前。 –