我只使用过ItemizedOverlay
,没有使用过Overlay
,所以这些建议只是纯粹的猜测。实际上,我甚至对2D图形API的应用也不是很熟悉。
显然,最好的解决方案就是让它停止不断地调用draw()
。尝试记录一些堆栈跟踪,并查看是否可以找出触发所有draw()
调用的原因。例如,在Android Google Groups中,最近有人注意到Chronometer
会导致同一UI中的小部件每秒重新绘制。虽然我可以看到你没有Chronometer
,但你可能能够找到某些导致draw()
调用的根本原因。
假设那并没有帮助,我猜测“是否有任何变化”的测试是一些MapView
方法的组合,例如getLatitudeSpan()
,getLongitudeSpan()
,getZoomLevel()
,可能还有其他方法。我猜测在每次draw()
时,您都需要迭代GPS点并绘制路线。如果是这样,您可以尝试:
Bitmap
支持的Canvas
上,然后将Bitmap
应用于您在draw()
中操纵的Canvas
上,并缓存该Bitmap
。draw()
中使用的值组合,如果下一个draw()
是一样的,则只需重复使用现有的Bitmap
。否则,请执行步骤#1,确保释放Bitmap
(或重新使用它,如果可能)。我猜测,在图形加速的情况下,将Bitmap
贴到Canvas
上比迭代坐标并绘制线条更便宜。通过缓存Bitmap
,您将节省垃圾生成成本。
总之,这只是一个想法。