在Android开发中使用单例时,时常遇到内存泄露问题,如何能够有效避免呢?
单例的生命周期是和APP生命周期相同的,所以只需要注意单例中的成员变量的引用链,是否持有了Activity生命周期的对象,比如activity的context,activity中的变量等。
1、代码层面,单例调用的时候,检查是否有引用和间接引用activity等实例
2、接入LeakCanary等检测框架,开发期间能早日发现问题
1,不要为了调用简单而使用单例,跟App相同生命周期再用单例
2,单例实例化注意同步
3,有activity等非app Context引用,记得及时推出
1.预防为主:不是特别必要的场景少用单例,以及单例中少持有非必须的数据,要持有的地方即使释放,可以考虑通过代码review机制保障
2.编译时检测:编写插件,基于规则去扫描单例相关的使用地方,进行一定的报警
3.运行时检测:做一些从单例对象开始的可达性分析,结合对象的使用频率和存货时长,来做一定的报警
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。