2012-08-23 92 views
0

在我的Android應用程序中,場景是這樣的 -什麼應該用於在android中以固定間隔重複執行任務?

我有幾張圖片存儲在SD卡中。 現在在我的應用程序中,我有一個圖像視圖,我必須不斷更新這個圖像視圖 就像一個幻燈片放映正在運行。這必須通過從SD卡中逐一獲取圖像並將它們設置在同一個ImageView中來完成。 ImageView中的圖像更改間隔也是固定的。 所以我有一個遊標存儲了獲取這些圖像的信息。 現在我想知道我應該如何一個一個地移動光標並從SD卡中取出圖像並將它們設置在我的ImageView中。

我應該使用計時器任務和計時器還是應該使用處理程序或其他東西?

請幫忙,因爲這是我的應用程序的初始點,我想從正確的方向開始。

回答

1

由於您從SD卡中檢索大量數據,因此最好使用線程來檢索/解碼位圖。

在這種情況下,Timer會很有用,因爲它在預定的時間段內在它自己的Java線程上運行。但是,您必須記住,您無法從非UI線程更新UI元素。因此,當位圖完全加載時,您需要一個同步元素,最終將解碼的位圖放入ImageView中。在這種情況下,您仍然需要使用Handler將消息隊列發送到UI線程。

因此,我可能會推薦使用Handler和AsyncTask的組合。創建一個AsyncTask類,檢索並解碼doInBackground()中的位圖。更新onPostExecute()中的ImageView。使用處理程序創建並執行一個新的AsyncTask(每當您更新視圖時)爲Nth毫秒。

這樣做的一個好處是它可以將所有圖像檢索保存在一個類中。您可以打開光標,檢索並關閉它。這比保持長時間運行的遊標打開更安全。

相關問題