发现一个好用的项目来分析内存泄露
https://github.com/square/leakcanary
接入该项目后就可以在写完页面以后打开app看看有没有内存泄露就好了
总结一下内存泄露的解决方法
static关键字引起
- 在当前页面finish的时候为static关键字修饰的变量设置为null
- 关于单例模式引用当前activity引起泄露也是由于static。那么在使用单例模式的时候需要传入context的时候如果可以,使用Application Context代替activity
Handler引起的内存泄漏
Handler使用时的内存泄露,handler使用时可以延时发送消息,如果在handler完成之前activity finish,那么handler持有当前activity的引用。当前activity不能被回收,引起内存泄露。
再一个,如果在handler中需要调用activity的,使用弱引用的方式调用。
|
|
- 使用弱引用
- 在activity finish的时候取消掉handler的消息
|
|
以后继续补充