在我的Android应用程序中,场景就是这个 -
我有几张图像存储在SD卡中。 现在在我的应用程序中我有一个图像视图,我必须不断更新此图像视图 就像幻灯片放映一样。这必须通过从SD卡逐个获取图像并在同一ImageView中设置它们来完成。 ImageView中的图像更改间隔也是固定的。 所以我有一个光标存储获取这些图像的信息。 现在我想知道我的方法是逐个移动光标并从SD卡中提取图像并在我的ImageView中设置它们。
我应该使用Timer Task和Timer,还是应该使用Handler或其他东西?
请帮助,因为这是我的应用程序的初始点,我想从正确的方向开始。
答案 0 :(得分:1)
由于您从SD卡检索大数据,最好使用线程来检索/解码位图。
在这种情况下,Timer会很有用,因为它在预定的时间段内在它自己的Java线程上运行。但是,您必须记住,您无法从非UI线程更新UI元素。因此,您需要一个同步元素,以便在完全加载位图时最终将解码后的位图放入ImageView。在这种情况下,您无论如何都需要使用Handler将消息队列发送到UI线程。
因此,我可能建议使用Handler和AsyncTask的组合。创建一个AsyncTask类,用于检索和解码doInBackground()
中的位图。更新ImageView
中的onPostExecute()
。使用处理程序创建并执行新的AsyncTask,只需Nth毫秒(无论何时更新视图)。
这样做的一个优点是它可以将所有图像检索保存在一个类中。您可以打开光标,检索,关闭它。这比保持长时间运行的游标打开更安全。