我正在构建我的交互式地图,我发现自己真的很困惑:
我有一个 ItemizedOverlay 类的扩展,我正在管理覆盖。
当 shell 我使用它的 populate() 函数来更新 mapView 中的覆盖时,我什么时候应该使用 invalidate() 或 postInvalidate() 来更新地图。
我发现有时这是可行的,有时是另一个。
如果有人愿意解释每个功能的确切作用 - 我会非常感谢,因为我找不到一个像样的解释。
我正在构建我的交互式地图,我发现自己真的很困惑:
我有一个 ItemizedOverlay 类的扩展,我正在管理覆盖。
当 shell 我使用它的 populate() 函数来更新 mapView 中的覆盖时,我什么时候应该使用 invalidate() 或 postInvalidate() 来更新地图。
我发现有时这是可行的,有时是另一个。
如果有人愿意解释每个功能的确切作用 - 我会非常感谢,因为我找不到一个像样的解释。
当您想要填充叠加层时,应该使用 populate()。如果您只想重新绘制它,那么如果您在 UI 线程上,则应使用 invalidate(),如果您在另一个线程上,则应使用 postInvalidate()。无效方法适用于任何视图,无论是按钮还是文本视图或任何东西。他们基本上告诉 Android 一些与视图相关的变化,比如显示的数据或按钮的状态或颜色等等。然后,Android 将通过调用 View 的 onDraw() 方法尽快尝试重绘 View。
我总是使用 invalidate() 并且从来没有遇到过问题......(即总是刷新)