2013-01-01 62 views
0

我有興趣緩存大量圖像。它們正在Horizo​​ntalScrollView中顯示。每張圖片都與一個網址相關聯。在2.2設備上,你無法啓動許多AsyncTask作爲圖像,因爲在說了10個AsyncTask之後,它會使應用程序相信我。所以我正在考慮啓動一個AsyncTask,它將通過每個url進行處理,獲取位圖並將其存儲在緩存中。由於某些圖片可能比其他圖片需要更長的時間,因此我認爲啓動AsyncTasks以獲取圖片並將其放入Cache的AsyncTask就是要走的路。等待每個人返回都是不可行的,因爲有些人可能比其他人需要更長的時間。所以我認爲一個AsyncTask和doInBackground是一個慢延遲循環,每個啓動一個。這種方法可用於圖像緩存位圖嗎?AsyncTask可以啓動另一個AsyncTask嗎?

+1

你見過墜機的原因嗎?不是因爲你運行_say_ 10'AsyncTask's,是因爲你加載了一堆'Bitmap'並且內存不足......緩存它們只會讓它變得更糟 –

+1

你應該做的事情是把呼叫放在'onPostExecute',因爲它已經完成了,並且你不會有大量的線程同時運行 – Jeeter

+0

不,對併發AsyncTasks的數量有限制。錯誤不是內存,而是線程相關的。 – user1847544

回答

1

從文檔:

的的AsyncTask類必須在UI線程加載。從JELLY_BEAN開始自動完成 。

此外,由於honecomb AsyncTasks是序列化的(默認情況下),所以也不宜使用AsyncTasks和並行進行長時間處理。如果這是你需要看看執行者。在AsyncTask文檔頁面中找到適當文檔的鏈接。

相關問題