我想問你一個簡單的問題。 我打擊java.lang.outofmemory錯誤。 I t可能是由圖片引起的,而且我在我的項目中有相當多的未使用的導入和未使用的變量(此時應用程序包含7個活動和每個活動約40個變量)。Android java.lang.Outofmemorry + imports
取未使用的導入和未使用的聲明變量的內存? 您是否認爲可以導致java.lang.outofmemory錯誤導致很多變量和導入?
我想問你一個簡單的問題。 我打擊java.lang.outofmemory錯誤。 I t可能是由圖片引起的,而且我在我的項目中有相當多的未使用的導入和未使用的變量(此時應用程序包含7個活動和每個活動約40個變量)。Android java.lang.Outofmemorry + imports
取未使用的導入和未使用的聲明變量的內存? 您是否認爲可以導致java.lang.outofmemory錯誤導致很多變量和導入?
不,變量在應用程序的Heap
中佔用的內存不多。這可能是由於您的應用程序中有bitmap
。如果您收到任何錯誤,請確保您已經發布了圖片的背景就像
imageview.setBackgroundDrawable(null);
relativeLayout.setBackgroundDrawable(null);
或
imageview.setBitmapImage(null);
這將消除在佈局中使用可繪製的圖像。
當我完成活動並轉到下一個活動時,是否在ondestroy()中使用此代碼? – mira
如果你正在從一個活動轉移到另一個活動,那麼把這個代碼放在'onStop()'中,因爲每當活動在後臺進行,'onStop()'將被調用,並且每當你回到你的主活動時' onResume()''將被調用,所以不是在'layout'中放置任何drawable,而是在'onResume()'方法中通過視圖的方法'setBackgroundResource()'繪製的位置 –
@ChintanRathod我想你的意思是'onPause()',而不是'onStop()'。 – Doomsknight
從安卓
位圖佔用了大量的內存,特別是對於豐富相似圖片 照片。例如,Galaxy Nexus上的相機拍攝的照片 高達2592x1936像素(500萬像素)。如果使用的位圖配置 是ARGB_8888(Android 2.3以後的默認設置),那麼將此圖像加載到內存中需要大約19MB的內存(2592 * 1936 * 4 字節),立即耗盡某些設備上的每應用程序限制。
基本上,如果使用不當,影像是殺手。
參見Loading Large Bitmaps Efficiently
具體地說此Android教程,代碼示例來加載在經縮放的位圖文件從/資源,在所要求的分辨率。
運行時,導入對內存沒有影響。他們唯一能做的就是減慢構建時間。沒有什麼不利。
是的,但我有* .png大小爲20 kB,尺寸爲200x200px(300x300像素)的圖片+背景上有700 x 700像素的圖片。活動開始後,背景上的圖片使用翻譯動畫。我認爲照片很小,而且我的設備也很強大。平板電腦宏基Iconia 500.你認爲動畫可以有一些內存要求。我認爲這些照片很小,這個錯誤對我來說很奇怪。 – mira
@mira你有多少幅200x200的圖片?動畫不應該是一個問題。一個700x700應該沒問題,但仍然是2MB。 – Doomsknight
從4到12張圖片(每個活動不同)+一個背景700 x 700.由於透明度我使用PNG文件和一些背景似乎非常大的數據給我,大約500-900 kB。但我沒有發現溶劑如何減少它們。 – mira
不,它沒有。對於你的問題 – Blackbelt
不,你的進口與它無關。或代碼的大小。這是你的照片。 – dmon