我有一个类:
public class WaypointOverlay extends ItemizedOverlay<OverlayItem>
它覆盖了 ItemizedOverlay
的 draw()
方法。
在我的 Activity 中,我有一张包含许多叠加项的 map 以及一个列表。我从 traceviewer 输出和 logcat 注意到 MapView.onDraw()
被调用了很多次,即使 map 没有被触及。这导致了一个真正无响应的列表和 map (当我的 WaypointOverlay
类只是从这些 onDraw
调用返回时,一切都运行良好)
我怎样才能降低 onDraw
调用的发生频率 - 理想情况下仅在 MapView
更改跨度时发生?我尝试在 onDraw
中检查 MapView
是否具有与上次 onDraw
调用相同的纬度/经度跨度,并且仅绘制如果两者不同。这导致 OverlayItems
仅在 map 平移或缩放时出现。
关于提高性能的任何想法?
最佳答案
我想我可能已经解决了这个问题(至少对我来说是这样)。在我的应用程序中,用户可以离开 map 然后返回,所有这些都在同一 Activity 中进行。每次用户返回 map 时,我都会重新添加我创建的所有叠加层。这意味着 map 上有太多叠加层 - 我看不到它们,因为它们重叠了。调用 MapView.getOverlays().clear() 使 map 和列表的性能显着提高。
关于android - ItemizedOverlay.draw() 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085096/