3

我正在构建我的交互式地图,我发现自己真的很困惑:

我有一个 ItemizedOverlay 类的扩展,我正在管理覆盖。

当 shell 我使用它的 populate() 函数来更新 mapView 中的覆盖时,我什么时候应该使用 invalidate() 或 postInvalidate() 来更新地图。

我发现有时这是可行的,有时是另一个。

如果有人愿意解释每个功能的确切作用 - 我会非常感谢,因为我找不到一个像样的解释。

4

2 回答 2

3

当您想要填充叠加层时,应该使用 populate()。如果您只想重新绘制它,那么如果您在 UI 线程上,则应使用 invalidate(),如果您在另一个线程上,则应使用 postInvalidate()。无效方法适用于任何视图,无论是按钮还是文本视图或任何东西。他们基本上告诉 Android 一些与视图相关的变化,比如显示的数据或按钮的状态或颜色等等。然后,Android 将通过调用 View 的 onDraw() 方法尽快尝试重绘 View。

于 2012-09-10T15:44:38.827 回答
0

我总是使用 invalidate() 并且从来没有遇到过问题......(即总是刷新)

于 2012-09-10T15:32:38.620 回答