防止android应用的内存泄露

要防止泄露Context的悲剧发生,我们有两种手段。我们都比较明了的一个是拒绝让activity类型的context脱离它本身的作用域从而防止像刚才那段代码中展示的无法消除的引用导致的无法垃圾回收。第二种手段是用Application类型的Context对象。这个Context对象会在你的应用存在的时期中一直存在下去——正如它的名字所预示的一样——它不会受activity生命周期的影响。如果你想要保留一个长久存在的需要Context对象的对象,别忘了使用Application Context。你可以简单地通过调用 Context.getApplicationContext()或者 Activity.getApplication()来获得Application Context对象。
避免Context类型的内存泄露,请务必记得如下几条:
 
1.不要将一个生命周期计划将超过Activity生命周期的对象通过引用保存的方式绑定到一个Activity类型Context上去。如果要绑定,被绑定的对象一定是和该activity拥有相同生命周期的。

2.尝试着在保存长生命周期的对象时用Application Context来代替Activity Context。

3.避免在一个activity中使用一个你没有控制它生命周期的非static的内部类,而是使用static的内部类,然后在里面需要使用context的地方使用外部activity的弱引用(而非方才代码中的强引用)。

4.记住:垃圾回收机制对于内存泄露来说并不是可以迷信的保障。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值