Android软件启动流程

看了很多博客,越看越懵逼,还是慢慢点开瞅瞅。为啥人家都那么厉害

1.用户点击APP图标
2.触摸屏经过一系列我不懂的操作--->framework :XX地方手指按下
3.用户松开手指
4.触摸屏经过一系列我不懂的操作--->framework :XX地方手指抬起
5.framework--->:计算
6.framework--->启动器Launcher :XX地方产生了点击的Action
7.启动器Launcher --->:找到APP图标对应的Intent
8.启动器Launcher --->ActivityManagerService :打开xx Intent
9.ActivityManagerService--->:进行一系列操作
10.ActivityManagerService--->Zygote:创建进程,并调用ActivityThread的main方法
11.启动APP

7步骤详细:
Launcher发送Intent并设置启动方式为FLAG_ACTIVITY_NEW_TASK,最终调用startActivityForResult方法。这个方法中通过 mInstrumentation.execStartActivity(Context who, IBinder contextThread, IBinder token, Activity target,Intent intent, int requestCode, Bundle options)方法(Instrumentation主要用来监控应用程序和系统的交互)第二个参数是ActivityThread类型变量,为UI线程,是APP在启动的时候创建的,ActivityThread中有一个main函数,是APP启动时的入口。token代表Launcher这个Activity也通过Instrumentation传给AMS,就知道谁向AMS发起了请求。

8步骤详细:
在Instrumentation.ActivityResult方法中通过ActivityManager的getService方法来获取AMS的代理对象(Android 7.0是通过ActivityManagerNative的getDefault来获取AMS的代理对象),返回类型是IActivityManager(一个接口,继承自IInterface,定义了四大组件的生命周期)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容