簡體   English   中英

Android - Grow Heap(Frag Case) - 字節分配..不加載任何位圖

[英]Android - Grow Heap (Frag Case) - Byte Allocation.. Not Loading any bitmaps

當應用程序從Splash屏幕加載到Main頁面時會發生這種情況。 它只發生在不在模擬器上的設備上:

05-17 08:10:16.627: I/dalvikvm-heap(14021): Grow heap (frag case) to 20.580MB for     2424256-byte allocation
05-17 08:10:16.666: D/dalvikvm(14021): GC_FOR_ALLOC freed 1K, 3% free 21000K/21511K, paused 21ms
05-17 08:10:16.697: D/dalvikvm(14021): GC_CONCURRENT freed 116K, 3% free 20885K/21511K, paused 2ms+2ms
05-17 08:10:16.720: D/dalvikvm(14021): GC_FOR_ALLOC freed 44K, 4% free 20841K/21511K, paused 10ms
05-17 08:10:16.728: I/dalvikvm-heap(14021): Grow heap (frag case) to 24.533MB for 4310896-byte allocation

我使用了Ecplise MAT - 解析了字節分配--Android.Graphics.Bitmap $ preloaded images ...

我使用的設備是Google Nexus Prime,Android 4.0

有沒有遇到過同樣的人? 有人會拋出一些專業知識......

我遇到了同樣的問題並找到了解決方案。

你是從資源加載你的位圖嗎? 如果是這樣,請嘗試將它們放在相應的可繪制文件夾中,而不是將它們保存在“drawable”或“drawable-mdpi”中。

當您將圖像資源放在普通的可繪制文件夾中時,對系統來說它意味着drawable-mdpi。 因此,具有高或超高dpi的設備(我相信Galaxy Nexus是超高)將擴展該資源以匹配設備的dpi。

如果您的資源只有1個大小,請將它們放在drawable-nodpi中,它將按原樣使用。 但是你的一些布局可能會受此影響,因此我將某些圖像保存在可繪制文件夾中(如按鈕圖像等),並將背景和其他更大的資源移動到drawable-nodpi中。

希望這可以幫助 ;)

您可能正在嘗試解碼一個非常大的Bitmap ,從而導致OutOfMemory異常。 這意味着您嘗試實現的操作超出了設備上每個應用程序所允許的VM預算,就堆內存消耗而言(在您的設備上似乎是24 MB,在您的模擬器上可能更多,這就是為什么它沒有不會發生在那里!)。

嘗試以兩倍的方式對Bitmap進行采樣:

BitmapFactory.Options o = new BitmapFactory.Options();
o.inSampleSize = 2;
Bitmap b = BitmapFactory.decodeFile(pathToBitmap, o);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM