Android4.4 Launcher3的IconCache分析
来源:互联网 发布:锤子手机怎么样 知乎 编辑:程序博客网 时间:2024/04/28 00:00
在Launcher3中,IconCache是用来缓存应用图标缓存的。IconCache不仅会保存图标,还会保存应用的title, 还有应用的描述,我们可以看到缓存都是保存在mCache的HashMap中,key是ComponentName和UserHandleCompat组成的对象, Value是一个对象CacheEntry, CacheEntry的三个成员是图标,标题和应用描述。
在Launcher启动的时候, 首先会在LauncherApplication中初始化LauncherAppState,而它会初始化IconCache对象, 刚开运行的时候IconCache肯定是空的, 只有在Launcher.java 这个Activity启动之后才会有缓存。在Launcher.onCreate()方法中,执行了IconCache的flushInvalidIcons, 会清空部分缓存,是(e.icon.getWidth() < grid.iconSizePx|| e.icon.getHeight() < grid.iconSizePx)图片尺寸不合适的那部分。如果Activity的方向发生了改变[即图标的大小发生了变化],原来的缓存可能都没有用了。那什么时候IconCache会被完全清空呢, 也就是图标和文字无效的时候,在用户的语言发生了变化之后会被清空,因为获取的图标和title很可能已经不同了。
添加图标最关键的方法是IconCache.cacheLocked(), 这个方法会获取某个Component[Activity]的图标和标题,并存入mCache中, 我们看到这个方法名最后是“Locked”表明,说明该方法调用的时候已经保证是线程安全的,可以看到IconCache.cacheLocked()每个调用的方法都有关键字synchronized。
最后IconCache还会生成一个系统默认图标,如果一个Activity由于某种原因我们没有找到对应的图标, 那么IconCache会返回一个默认图标, 这个图标是从系统取到的资源, 资源id是android.R.mipmap.sym_def_app_icon, 不同的系统版本这个资源对应的图标是不一样的。
- Android4.4 Launcher3的IconCache分析
- Android4.4 Launcher3分析之IconCache
- android Launcher3中的IconCache的剖析
- Android4.4 Framework分析——Android默认Home应用Launcher3的加载过程分析
- android4.4 Launcher3 修改配置文件default_workspace.xml无效的解决方法
- android4.4 Launcher3 修改配置文件default_workspace.xml无效的解决方法
- launcher3的Folder分析
- Launcher3的简要分析
- Android4.4 应用分析——修改Launcher3应用以适应单屏壁纸
- Launcher3的workspace滑动分析
- Launcher3中Folder的一点分析
- Launcher3分析之拖动图标的流程
- Launcher3源码分析
- Launcher3 壁纸分析
- Launcher3源码分析(Workspace)
- Launcher3源码分析(CellLayout)
- Launcher3源码分析(DeviceProfile)
- Launcher3 壁纸流程分析
- 指针为NULL与空间malloc(0)的解释
- How to retreive raw post data from HttpServletRequest in java
- 实时竞价(RTB) 介绍(基础篇)
- quick_sort(快速排序)c语言实现
- SVM理解
- Android4.4 Launcher3的IconCache分析
- LeetCode94 BinaryTreeInorderTraversal Java题解(递归 迭代)
- ABAP Screen的常用语句
- 清空session
- 技术文化建设实践
- Django用户认证系统(三)组与权限
- Android编译中m、mm、mmm的区别
- 日经春秋 20150708
- python+opencv+numpy入门