APP开发实战122-APP防止内存泄露

本文介绍了防止APP内存泄露的几种方法,包括使用IntentService避免Service泄露,避免长生命周期对象持有Activity引用,正确处理非静态内部类和静态实例,避免循环引用,及时注销BroadcastReceiver,清理Handler的消息,关闭Cursor、I/O流和不必要的线程,确保线程生命周期不超出Activity等。这些措施有助于优化APP性能和内存管理。
摘要由CSDN通过智能技术生成

30.3.2防止内存泄露

1 使用Service时,尽量使用IntentService,这样可以避免忘记关闭服务。

 

2 避免一个对象被比它生命周期长的对象持有或引用,这样会导致该对象无法被释放,内存泄露。

如对一个Activity Context保持长生命周期的引用,即使这个Activity已经被销毁了,但相关内存无法被释放。

对于生命周期长的对象,可以使用ApplicationContext。

非静态内部类的静态实例容易造成内存泄漏,这个静态实例的生命周期超过了类本身:如Activity中的一些特殊Handler等,尽量使用静态类和弱引用来处理。

 

3 避免代码设计的错误造成内存泄露,如循环引用:A持有B、B持有C、C又持有A。

 

4 BroadCastReceiver要记得注销处理。

 

5在Activity的onDestroy方法中调用

handler.removeCallbacksAndMessages(null),取消所有消息的处理,将所有的Callbacks和Messages全部清除掉。

 

6 在查询SQLite数据库时,会返回一个Cursor,当查询完毕后,及时关闭。

 

7 I/O流操作完毕,读写结束&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值