android launcher 启动流程

以前做手机ROM定制,写了一些源码分析,现在把它整理出来往以后能用。
一、系统启动Luancher入口
在这里插入图片描述
代码路径:
frameworks/base/services/java/com/android/server/SystemServer.java
frameworks/base/services/core/java/com/android/server/am/ActivityStackSupervisor.java
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
frameworks/base/services/core/java/com/android/server/am/ActivityStackSupervisor.java
20161009
二、开机启动流程:
1、先执行systemservice.java 调用,在执行ActivityManagerService.java里面的startHomeActivityLocked函数,创建一个意图
intent.category.home,获取含有这个意图的activity应用接口,待luncher启动时再打开。应用程序在配置文件要有两个属性:
Action类型为Intent.ACTION_MAIN,并且Category类型为Intent.CATEGORY_LAUNCHER。
2、通过这个PackageManagerService.queryIntentActivities接口来查询所有Action
类型为Intent.ACTION_MAIN,并且Category类型为Intent.CATEGORY_LAUNCHER的Activity了
3、PackageManagerService会把系统中的应用程序都解析一遍,然后把解析得到的Activity都保存在
mActivities变量中,这里通过这个mActivities变量的queryIntent函数返回符合条件intent的Activity。
4、加载应用图标的icon,名称。
5、launcher3 -->onclick():点击home键展开系统应用程序。
6、启动对应的应用程序接口方法:点击应用程序图标的时候,执行的是tag instanceof ShortcutInfo这个case。最终通过调用
final Intent intent = ((ShortcutInfo) tag).intent; 和 boolean success = startActivitySafely(v, intent, tag);来启动
应用程序的入口activity。
在其他应用启动的流程,按键点击启动流程。
二、launcher桌面区域划分
1、seachtoptargetbar :屏幕最上方有个搜索框,在我们拖动图标的时候,搜索框会替换成“删除“
2、workspace:左右滑动屏幕的容器
3、hotseat:常用应用
4、pageindicator:workspace的指示器
5、celllayout:负责应用图标和小部件
三、更改图标和字体及hotseat应用默认设置涉及的类
1、hotseat.java–>显示常用allapps图标名称
2、workspace.java–>显示文件夹、应用图标名称
3、deviceprofile.java–>调整hotseat图标区域
4、cellayout.java–>区域高度
5、launchermodle–>建立器数据库
6、launcherappstate.java–>初始化添加广播和监听器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值