使用Handler和postDelayed更新ListView

时间:2012-10-18 20:57:40

标签: android

问题

是否一再将Message个对象发布到Handler被认为可以接受?我正在使用这种机制在多次发生回调之后等待一段延迟。

背景

我有一个具有相当复杂视图的ListView。每个视图都有一些文本组件和一个相当大的ImageView。我正在尝试在滚动时解决一些混乱。

我已将其转换为使用绘图缓存来减少虚假绘图。我添加了一种机制,用于在ImageView中延迟Bitmap的加载,直到滚动停止。

此机制使用ListView OnScrollListener.onScroll(...)(因为我发现onScrollStateChanged(...)不可靠)。每当onScroll触发时,我会在删除相同类型的现有消息后使用MessageHandler发布postDelayed(message, 200)

结果是一堆帖子并移除到Handler,当最终得到处理时,所有图像都被加载。我想知道重复发布和删除处理程序中的消息是否会导致问题?我还没打过一个,但如果有替代方案,我想听听。

1 个答案:

答案 0 :(得分:0)

在系统繁忙之前,添加和删除邮件的成本并不高。然后它变得不可靠,因为主线程会被束缚。相反,我切换到需要通知的组件的开启机制,这似乎缓解了很多问题。