Android OOM个人愚见

本文分享了解决Android应用出现OutOfMemory(OOM)问题的经验。主要包括良好编码习惯、释放View资源、图片缓存回收及Activity销毁时调用GC等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上个项目中就遇到了OOM的问题,但是是图片特别多,我被图片动不动就搞死了,现在搞的这个项目竟然也把我被OOM搞晕了!图片的这个问题普遍网上讲的比较多,但是除了图片之外资料就相对少了点,(小马的一个博客写的很是不错)今天就晒晒自己的拙见!

1.良好的编码习惯,就是代码模块化,功能提具体,功能体中的变量用完之后立马null。如果变量特别多那就Null之后直接System.gc();

2.在项目中一般会用到View,这个View中包含了好多View,我在网上找到了一种方法,出处想不起来了,

/**释放View内存***/
	private void unbindDrawables(View view) {  
	    if (view.getBackground() != null) {  
	    view.getBackground().setCallback(null);  
	    }  
	    if (view instanceof ViewGroup) {  
	        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {  
	        unbindDrawables(((ViewGroup) view).getChildAt(i));  
	        }  
	    ((ViewGroup) view).removeAllViews();  
	    }  
	}  

调用完之后System.gc();就OK了!其实有时候觉得频繁的调用GC会对CPU的耗费巨大,因此建议不要太过频繁的使用!

3.图片问题就使完之后就recycle();网上搜搜这个方法比较多就不累赘了!

4.我自己发现有时候在finish()之后System.gc();能省出好多内存。


自己的愚见仅供参考!大家多多指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值