UniversalImageLoader源码解读07-内存泄漏和bug
来源:互联网 发布:淘宝上开网店要钱吗 编辑:程序博客网 时间:2024/05/19 01:31
UIL使用单例模式
private volatile static ImageLoader instance;/** Returns singleton class instance */public static ImageLoader getInstance() {if (instance == null) {synchronized (ImageLoader.class) {if (instance == null) {instance = new ImageLoader();}}}return instance;}
如果单例模式没有与Activity关联,那么不至于泄漏Activity,不幸的是,UIL类内部持有了一个ImageLoaderConfiguration 引用,而我们在初始化的时候,传入了一个Context,
所以,如果在程序完全推出前,你不调用UIL的destroy方法,那么必然会导致Activity内存泄漏
public void destroy() {if (configuration != null) L.d(LOG_DESTROY);stop();configuration.diskCache.close();engine = null;configuration = null;//将Context与ImageLoader解除关联}
但是呢,destroy并没有把instance置空,美中不足,最好置为空。
destroy方法不是线程安全的,这也就意味着,在多线程环境下将会导致一些异常,这个异常你也许并不会陌生
private static final String ERROR_NOT_INIT = "ImageLoader must be init with configuration before using";
好, 到此为止,UniversalImageLoader的源码解读就算完成了,还有一些没有涉及到的工具类,我想不需要我做过多解释,太详细反倒使人感觉乏味,直击主题要害才是关键,谢谢大家
0 0
- UniversalImageLoader源码解读07-内存泄漏和bug
- UniversalImageLoader源码解读04-内存缓存
- UniversalImageLoader源码解读02-图片处理和显示
- UniversalImageLoader源码解读05-磁盘缓存
- UniversalImageLoader源码解读06-任务调度
- 内存泄漏Bug
- UniversalImageLoader源码解读01-用来显示图片的ImageAware
- UniversalImageLoader源码解读03-一些无关紧要的小类
- iOS内存管理和malloc源码解读
- BDS2006的内存泄漏?bug?
- UniversalImageLoader源码学习——LruMemoryCache内存缓存
- UniversalImageLoader 源码笔记(1)
- VCL 中的一个内存泄漏 Bug
- 无处不在的内存泄漏-苹果BUG?
- 内存溢出和泄漏
- 内存泄漏和溢出
- 内存泄漏和溢出
- 修复miniblink 文件编码检测和退出内存泄漏的bug
- UITableViewCell 的那些事
- Oracle rownum和rowid
- .addClass(),.removeClass(),.toggleClass()的区别
- c#的DateTime.Now函数详解
- ReactNative js判断android还是ios
- UniversalImageLoader源码解读07-内存泄漏和bug
- Swift HTTP GET请求例子
- tomcat发布项目如何去掉项目名称
- 表空间2
- ios开发-无界面设计文件开发
- java中的Serializable接口的作用
- 表空间
- 面试笔试题5--大整数表示问题?
- BZOJ3523: [Poi2014]Bricks