Android 7.0 ActivityManagerService(1) AMS的启动过程

Android 7.0 ActivityManagerService(1) AMS的启动过程

ID:44713565

大小:631.00 KB

页数:43页

时间:2019-10-25

Android 7.0 ActivityManagerService(1) AMS的启动过程_第1页
Android 7.0 ActivityManagerService(1) AMS的启动过程_第2页
Android 7.0 ActivityManagerService(1) AMS的启动过程_第3页
Android 7.0 ActivityManagerService(1) AMS的启动过程_第4页
Android 7.0 ActivityManagerService(1) AMS的启动过程_第5页
资源描述:

《Android 7.0 ActivityManagerService(1) AMS的启动过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android7.0ActivityManagerService(1)AMS的启动过程一、概况ActivityManagerService(AMS)是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用程序的管理和调度等工作。AMS通信结构如下图所示:从图中可以看出:1、AMS继承自ActivityManagerNative(AMN),并实现了Watchdog.Monitor和BatteryStatsImpl.BatteryCallback接口。2、AMN继承Java的Binder类,同时实现了IActivityManager接口,即A

2、MN将作为Binder通信的服务端为用户提供支持。3、在ActivityManagerNative类中定义了内部类ActivityManagerProxy,该类同样实现了IActivityManager接口,将作为客户端使用的服务端代理。4、其它进程将使用ActivityManager来使用AMS的服务。ActivityManager通过AMN提供的getDefault接口得到ActivityManagerProxy,然后再以Binder通信的方式调用AMS的接口。对AMS的基本情况有一个大概的了解后,我们一起来分析一下AMS的启动过程。由于AMS启动涉及的内

3、容比较多,我们将分段进行分析。二、createSystemContext在进入到AMS相关的流程前,我们需要先了解一下相关的准备工作。我们已经知道了,zygote创建出的第一个java进程是SystemServer。在SystemServer的run函数中,在启动AMS之前,调用了createSystemContext函数。其代码如下所示:.............//SystemServer在启动任何服务之前,就调用了createSystemContext//创建出的Context保存在mSystemContext中//Initializethesystem

4、context.createSystemContext();//Createthesystemservicemanager.//SystemServiceManager负责启动所有的系统服务,使用的Context就是mSystemContextmSystemServiceManager=newSystemServiceManager(mSystemContext);.............我们跟进一下createSystemContext:privatevoidcreateSystemContext(){//调用ActivityThread的systemMa

5、in函数,其中会创建出系统对应的Context对象ActivityThreadactivityThread=ActivityThread.systemMain();//取出上面函数创建的Context对象,保存在mSystemContext中mSystemContext=activityThread.getSystemContext();//设置系统主题mSystemContext.setTheme(DEFAULT_SYSTEM_THEME);}以上函数中,最重要的就是ActivityThread.systemMain了,我们分析一下该函数。1、Activit

6、yThread.systemMainpublicstaticActivityThreadsystemMain(){//Thesystemprocessonlow-memorydevicesdonotgettousehardware//accelerateddrawing,sincethiscanaddtoomuchoverheadtothe//process.if(!ActivityManager.isHighEndGfx()){//虽然写着ActivityManager,但和AMS没有任何关系//就是利用系统属性和配置信息进行判断//关闭硬件渲染功能Thre

7、adedRenderer.disable(true);}else{ThreadedRenderer.enableForegroundTrimming();}//创建ActivityThreadActivityThreadthread=newActivityThread();//调用attach函数,参数为truethread.attach(true);returnthread;}从上面的代码可以看出,ActivityThread的systemMain函数中,除了进行是否开启硬件渲染的判断外,主要作用是:创建出ActivityThread对象,然后调用该对象的a

8、ttach函数。ActivityThr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。