2012-01-04 71 views
0

我在爲Android構建一個新聞閱讀器,第一個活動將顯示最新消息的列表以及縮略圖預覽圖像。 爲了得到縮略圖,我必須運行一個方法,這會大大增加加載時間;所以,我想創建一個單獨的線程來運行每一次。 更具體地說,我想先加載新聞標題,然後逐個加載圖片;同時做所有這些我不希望UI被鎖定(例如,如果用戶觸摸消息,我希望應用程序加載它,即使這些縮略圖仍然在加載)。 我的問題是:我應該使用處理程序(每個新聞一個線程)還是AsyncTask(每個新聞一個asyncTask對象)來實現這個目標?
謝謝你的回覆。加載Android UI以避免鎖定

+0

多少新聞,我們談論的同時? – JOG 2012-01-04 15:48:01

+0

十四條新聞加載 – user1012480 2012-01-04 15:51:06

回答

0

Handler Vs AsyncTask

我會用一個的AsyncTask下載所有的「新聞鏈接」,然後有一個的AsyncTask調用的AsyncTask下載每個縮略圖和更新UI onPostExecute。然後,如果用戶在完成之前單擊鏈接,則可以在主Asynctask上調用cancel,它將檢查每個縮略圖asynctask之間的isCancelled(),並在它被取消時返回。

0

毫無疑問,AsyncTasks比線程處理程序架構更簡單和模塊化,但內部它們以相同的方式執行操作。
爲了解決您的問題,我建議先加載新聞。
您的新聞pojo/class可以像包含兩個名稱,
title和imageUrl。

現在顯示新聞列表並啓動另一個AsyncTask,它逐個獲取圖像並將它們存儲在Data Str /列表中。

每次從服務器獲取映像時,您的適配器都應該是「notifyDataSetChanged()」。

這樣你就可以讓用戶先看到新聞,並且圖片被加載而不會使UI被阻塞。

0

我機智使非同步任務加載數據,然後EXCUTE任務這就是填充列表時,異步任務是唐礦正在運行