我有一個比視圖的可見部分更大的Android視圖(例如10000x6000像素),我想在onDraw()中繪製路徑,方法。只有與視口相交的路徑纔會被繪製出來,並且大部分時間都很有效,但是當繪製的路徑的邊界框比視口大得多時,會分配太多的內存並導致應用程序崩潰,導致內存不足錯誤。甚至與剪輯範圍設置爲視口,存儲器被分配用於由所述路徑的邊界框佔據的全部面積:在畫布上繪製比屏幕大得多的路徑時出現內存不足
在上面的示例中,視口是唯一的2000x1400像素,但當所述路徑繪製在畫布上,內存分配爲適合完整路徑(7000x4000像素= 112 MB)。
有沒有辦法限制在這種情況下分配的內存量?
順便說一下,iOS在使用剪輯邊界時限制了渲染柵格圖像的大小。
編輯:看起來就像是一個已知的問題與硬件渲染層:https://code.google.com/p/android/issues/detail?id=24023
我猜你正在使用的OnDraw方法的視圖中繪製的線我將在一個主線程運行,用來刷新查看 – Vijayaramanan
因此,使用具有單獨線程的表面視圖來更新您的視圖將主要在遊戲應用程序中使用表面視圖來繪製圖形 – Vijayaramanan
SurfaceView對於我需要做的事情來說是過量的。並且它不能解決渲染大於屏幕的路徑所需的內存問題。 –