Android 11.0 ActivityManagerService的启动流程

本文详述了Android系统核心服务ActivityManagerService(AMS)的启动过程,从SystemServer的startBootstrapServices方法开始,逐步解析到AMS的onStart方法。作者通过绘制时序图辅助理解,并强调理解AMS启动流程的重要性,指出深入研究AMS的复杂性并非易事,建议关注主要流程而非细节。

        首先推荐一篇文章,ActivityManagerService-AMS启动流程-[Android取经之路]。这篇文章是以Android 10.0源码为基础分析的,写的很详细也很棒,我学习AMS的启动就是看着这篇文章学的,在此先感谢作者的分享。

        我们都知道,AMS非常重要,关乎着四大组件的启动,同时它也非常非常复杂,如果不是做系统定制开发的想把AMS彻底搞清楚那真的是非常困难的一项巨艰巨的任务。同时,即便是做系统定制开发的人,甚至是Google的开发者也不一定能完全搞清楚。因此,在学习这种系统核心服务的时候,我建议我们只需要把它的流程搞清楚就可以了,至于那些细节真的没必要。

        据此,我自己学习之后(花了好长时间才把上面推荐的文章看完),我自己画了一个启动的时序图,主要方便自己复习,现在分享出来,与诸位共勉。

 从SystemServer.java到AMS.onStart方法

1. SystemServer.java startBootstrapServices方法中调用 ActivityManagerService.Lifecycle.startService(mSystemServiceManager, atm);
2. ActivityManagerService.java 中的 Lifecycle中的startService方法,
3. 之后调用SystemServiceManager.java 中的startService方法
4. SystemServiceManager.java 中经过一些startService 方法的调用,最终会执行到service.onStart(); 而此时的service就是ActivityManagerService所以流程就来到了onStart方法
5. onStart方法中调用了mService.start()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值