Android7.0 Messaging源码分析(3) - 缓存管理篇
来源:互联网 发布:尚观java培训学费 编辑:程序博客网 时间:2024/05/22 13:47
在《Android7.0 Messaging源码分析(2) - Application 创建篇》中介绍了在 application 创建过程中会创建缓存管理类,这篇文章来做简要分析。
创建代码在FactoryImpl.java,
77 public static Factory register(final Context applicationContext,78 final BugleApplication application) { ......91 factory.mMemoryCacheManager = new MemoryCacheManager();92 factory.mMediaCacheManager = new BugleMediaCacheManager();93 factory.mMediaResourceManager = new MediaResourceManager(); }
其中包含缓存管理(MemoryCacheManager)和媒体资源管理(MediaResourceManager)两部分。
缓存管理使用的是android.util.LRUCache,是最近最少使用(Latest recently used)缓存算法的实现,底层数据结构使用的是LinkedHashMap(当年面试的时候聊到图片缓存框架时还拿出来装b,结果没讲清楚,Faint)。有兴趣的可以深入研究一下。
媒体资源包括VCard,Image,Avatar(头像)等。
缓存管理类图如下:
媒体资源管理类图如下:
在创建 MediaCacheManager 时会调用 MemoryCacheManager.get().registerMemoryCache(this); 将自己注册到MemoryCacheManager。
MediaRequest 通过 getMediaCache 接口与 MediaCache 联系起来。
47 /**48 * Returns the media cache where this MediaRequest wants to store the loaded49 * media resource.50 */51 MediaCache<T> getMediaCache();
至于每种 Request 的实现就不做分析了。
总结:
- 缓存管理使用了LRU缓存算法;
- 通过 MediaRequest 来获取VCard,Image,Avatar等媒体资源,并使用缓存管理器管理它们;
0 0
- Android7.0 Messaging源码分析(3) - 缓存管理篇
- Android7.0 Messaging源码分析(0) - 启动篇
- Android7.0 Messaging源码分析(1) - 基础知识篇
- Android7.0 Messaging源码分析(2) - Application 创建篇
- Android7.0 Messaging源码分析(4) - DataModel篇
- Android7.0 Messaging源码分析(5) - MMS类库篇
- Android多线程(三)AsyncTask源码分析(Android7.0)
- Android7.0去电流程源码分析(一)
- Android7.0去电流程源码分析(二)
- Android7.0 init进程源码分析
- Android7.0 init进程源码分析
- android7.x SystemUI源码分析(1)
- android7源码结构分析
- 基于Android7.0的Launcher3源码分析(1)——框架设计分析
- MacPro Android7.0源码下载
- Android7.0关机流程分析
- Android7.0 startService流程分析
- Android7.0关机流程分析
- MergeAdapter实现复杂ListView布局
- SNMP协议
- AS配置NDK外部工具
- Spring-Redis Cacheable中文翻译
- ResultSet
- Android7.0 Messaging源码分析(3) - 缓存管理篇
- tablayout的使用
- 局部变量、全局变量、堆、堆栈、静态和全局
- bzoj 4582: [Usaco2016 Open]Diamond Collector (单调队列+线段树)
- linux安装redis详解
- Opencv 基于肤色的手势分割
- 静态绑定和动态绑定
- 欢迎使用CSDN-markdown编辑器
- STM32之CAN控制器