Android4.4 Launcher3的IconCache分析

原创 2015年07月08日 09:57:02

在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, 不同的系统版本这个资源对应的图标是不一样的。

Android程序更换icon后不变的问题

更改Android应用程序的图标后,运行图标仍然没有改变,而且多出现在小米手机上。 原因是小米的miui系统会缓存图标。下面提出几个解决办法。 1.清除手机缓存,重启手机。 2.把当...

Android4.4 应用分析——修改Launcher3应用以适应单屏壁纸

Android4.4的墙纸信息存放在/data/system/users/0/目录下,WallpaperManagerService启动后,会生成如下两个文件在/data/system/users/0...

Android4.4 Framework分析——Android默认Home应用Launcher3的加载过程分析

本文主要介绍Android4.4默认Home应用Launcher3的启动过程和Launcher3的数据加载过程。Launcher的启动是开机时,ActivityManagerService准备好后开始...

android4.4原生launcher3

  • 2014年12月20日 20:33
  • 1.95MB
  • 下载

android4.4 Launcher3 修改配置文件default_workspace.xml无效的解决方法

此文章针对的是一整套的系统,并不适合单独下载Launcher3源码下来修改的情况。      最近公司在搞一个车载方案,用的是RK的系统,因为以前一直做的是A6的方案,android4.0的,这次换...
  • lhp1930
  • lhp1930
  • 2014年12月10日 14:07
  • 1508

修改后的android4.4原生launcher3

  • 2014年12月22日 10:07
  • 7.57MB
  • 下载

Android4.4-Launcher源码分析系列之搜索框/删除框

一、搜索框/删除框简介 搜索框在手机桌面上方,当拖动一个快捷方式图标时就会隐藏搜索框并且显示删除框.如下图所示 二、搜索框/删除框布局   屏幕上方的搜索和删除框是在一个布局里,名称为qsb...

Android4.4-Launcher源码分析系列之概述

这段时间研究了安卓4.4的Launcher源码,决定把自己的收获分享一下,欢迎各位留言. 把4.4的Launcher源码导入到eclipse中时会报一些错误,这是因为涉及到一些隐藏的api和资源.需要...

Android4.4-Launcher源码分析系列之关键的类和接口之DragScroller、DragController

一、DragScroller DragScroller是一个接口,顾名思义是控制滑动的接口,它定义了4个方法 public interface DragScroller { /** * 左...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android4.4 Launcher3的IconCache分析
举报原因:
原因补充:

(最多只允许输入30个字)