我只使用ItemizedOverlay
而不是Overlay
,所以這些建議是純粹的猜想。哎呀,我甚至沒有做過2D圖形API。
顯然,最好的答案是讓它一直停止調用draw()
。嘗試記錄一些堆棧跟蹤,看看是否可以找出觸發所有draw()
調用的內容。例如,在最近的Android Google Groups中,有人注意到Chronometer
會導致同一UI中的小部件每秒重繪一次。雖然我可以看到您沒有Chronometer
,但您可能能夠找出某些根本原因,但可以更正draw()
調用。
假設沒有幫助,我猜測的測試「是否有任何改變或不」是getLatitudeSpan()
,getLongitudeSpan()
,getZoomLevel()
某種組合,也許其他MapView
方法。而且,我假定在每個draw()
上,您都在迭代您的GPS點並繪製路線。如果是的話,你可以嘗試:
- 當你真的畫,先畫到由
Bitmap
支持的Canvas
,然後在應用Bitmap
的Canvas
你上交draw()
,並且緩存Bitmap
。
- 跟蹤在最後的
draw()
中使用的是什麼組合值,如果下一個draw()
是相同的,只需重新使用現有的Bitmap
即可。否則,請轉到步驟#1,確保釋放位圖(或者重新使用它,如果可能的話)。
我猜測,通過圖形加速,將Bitmap
炸到Canvas
比遍歷座標和繪製線要便宜。而且,通過緩存Bitmap
,您將節省垃圾產生。
無論如何,只是一個想法。
是否有可能重寫錯誤的方法? [這裏](http://stackoverflow.com/questions/2792263/draw-is-being-constantly-called-in-my-android-map-overlay)你找到了一個很好的主題解釋... – demetrio812 2011-07-23 00:53:01