我使用的大小20-30kb的10個PNG圖像的ImageView,但70MB分配的內存增大到時這項活動負載270MB。 那麼爲什麼這些太多的內存被分配給這些圖像。安卓:太多分配的內存,同時使用PNG代替矢量圖像
這是內存分配的截圖
這是我的形象的一個
我使用的大小20-30kb的10個PNG圖像的ImageView,但70MB分配的內存增大到時這項活動負載270MB。 那麼爲什麼這些太多的內存被分配給這些圖像。安卓:太多分配的內存,同時使用PNG代替矢量圖像
這是內存分配的截圖
這是我的形象的一個
取決於你在哪裏把它可嘗試加載資產文件太大。
舉例來說,如果你擁有了它drawable
或nodpi-drawable
與低密度的設備將嘗試加載一個潛在的大圖像。
另外,請記住,實際文件大小並不重要,因爲它可能由於壓縮而很小,但圖像在繪製時必須轉換爲位圖,所以如果實際大小太大也可以導致一個OOM。
如果你有機會到原來的我會建議使用矢量繪製(這是一個簡單的形狀,所以應確定)和AS會生成所需的PNG文件的舊版本。
文件大小並不重要。不,你的圖片大小爲20kb,但分辨率相當大。當圖像被加載到存儲器中花費存儲器等於totalNoOfDotsInImageBitmap *圖像的4字節 和totalNoOfDotsInImageBitmap =寬×高。
4個字節 - 因爲ARBG(每參數1個字節)位圖
的單個點的所以降低寬度和圖像的高度可以解決問題。