存在内存泄露问题的一些代码片段像下面这样:
2. public class Util {
3.
4. private Context mContext;
5. private static Util sInstance;
6.
7. private Util(Context context) {
8. this.mContext = context;
9. }
10.
11. public static Util getInstance(Context context) {
12. if (sInstance == null) {
13. sInstance = new Util(context);
14. }
15. return sInstance;
16. }
17.
18. //other methods
19. }
假设Activity A 里使用Util类:
Util.getInstance(this);
代码大意就是这样,这样写的问题就是,在Activity A 里使用Util类,传入的context 是 actvitiy-context。试想一下,当Activity A 生命周期结束,但Util类里面却还存在A的引用 (mContext),这样Activity A占用的内存就一直不能回收,而A的对象也不会再被使用。本人写代码测试过,在A中调用了finish(),A的destroy()方法也被执行了,但其占用的内存,比如说,ImageView占用的内存,还是不能释放的。
那么如何解决这个问题呢?在A中,可以用Util.getInstance(getApplicationContext());
或Util.getInstance(getApplication()); 代替。
因为Application的生命周期是贯穿整个程序的,所以Util类持有它的引用,也不会造成内存泄露问题。
分享到:
相关推荐
Android Singleton单例模式运用详解
android 单例模式 干货 告诉你哪种单例模式最实用 最好用 不再迷茫
android SQLite DBHelper 单例模式 实现 dbhelper=DBHelper.getInstance(this);
单例模式是最简单的设计模式之一,但是对于Java的开发者来说,它却有很多缺陷。在本月的专栏中,David Geary探讨了单例模式以及在面对多线程(multithreading)、类装载器(classloaders)和序列化(serialization)时...
Android处理内存泄漏的代码例子。用于演示避免内存泄漏的几种方法,包括:关闭游标、重用适配、回收图像、注销监听、释放引用。
Android webview 内存泄露的解决方法 最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递...
android 六种单例模式源码介绍,反序列化解决方案,编译环境为android studio 3.0.1
android资料 单例模式的八种写法比较 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。
java 设计模式 单例模式在android中的应用,小伙伴们,如果有好的建议可以发送到我的邮箱whsgzcy@foxmail.com,如果积分不够的话可以直接发邮件给我,毕竟都是熬夜时间搞的嘛。
单例模式的几种实现方式Demo
闲聊群 : 668524118 本群主要用于编程技术 ,及创意作品 ,思维架构的交流 ,欢迎喜欢创新 ,热爱生活的朋友加入 !
单例模式中有区分了懒汉式和饿汉式,懒汉式主要是用时间来换空间,饿汉式则是用空间来换时间。饿汉式是线程安全的,懒汉式是非线程安全的,如果要实现懒汉式的非线程安全,则可以再访问点添加synchronized关键字声明...
单例模式详解
Android单例模式的几种方法总结 因为单例模式过于简单,下面我就直接上代码了。 简单式: public class Single{ private static Single single=new Single(); public static Single instance(){ return singlel;...
比如在Android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenHelper)等都会用到单例模式。下面针对一些例子分析一下我们在开发过程中应用单例模式需要注意的点。 一、作用 单例模式...
Android应用正确的退出方式(单例模式)
这种写法可以保证线程安全.两个if都是不能去掉的.如果去掉第一个if: 那么所有的线程都会到这里来先获取锁,然后判断singleton是否为空.所有线程都会串行
本文实例讲述了Android编程设计模式之单例模式。分享给大家供大家参考,具体如下: 一、介绍 单例模式是应用最广的模式之一,也可能是很多初级工程师唯一会使用的设计模式。在应用这个模式时,单例对象的类必须保证...
Android Activity单例
list循环退出Activity,单例模式实现android的退出功能,代替广播,singleton,非常好用的资源,大家下载用用