概述
以前做手机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–>初始化添加广播和监听器。
最后
以上就是清秀毛衣为你收集整理的android launcher 启动流程的全部内容,希望文章能够帮你解决android launcher 启动流程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复