首页天道酬勤安卓系统启动流程,android的activity

安卓系统启动流程,android的activity

张世龙 05-06 09:16 52次浏览

在此过程中,从单击序言屏幕上的APP icon到该APP显示第一个可视界面,共Android系统究竟做了什么操作?又涉及到哪些进程?

整个过程相对复杂,不能花时间思考所有源代码的作用。 那样的话,就会迷失在源代码的海洋里。 相反,我们应该在重点去关注这个过程上,从较大的层面把握这个过程。 这样,就可以进入源代码的海洋。 可以知道这个原理。

一、根活动启动流程:从Launcher到AMS。 单击屏幕上的APP icon,Laucher向AMS发送启动APP的请求。 因为Launcher是Launcher进程,而AMS是SystemServer进程。 因此,实现这个要求。 本质上,实现了步间通信的功能。 在Android领域实现跨多个进程通信的技术有Broadcast、ContentProvinder、AIDL等各种技术。 在系统领域,虽然不能说是一切,但大多数进程间通信技术都采用了AIDL技术。 Launcher提交请求成功后,启动APP的重担落到了AMS的头上。

2 .从AMS到应用程序线程。 收到Launcher的创建APP应用程序请求后,AMS将执行以下操作:

检查调用者,是否有资格来创建应用。例如,调用进程是否隔离、是否具有权限,以及是否有理由将其配置为启动APP应用程序?封装创建应用所需的相关信息。例如包名称、apk描述信息和启动的flag等。 3358 www.Sina.com/http://www.Sina.com/AMS不是直接创建应用进程,而是交给Zygote进程创建。 Zygote进程通过fork自己的进程创建新的应用进程,并允许新的应用进程继承相关权限。通过上面所封装的信息,来判断应用所在的任务栈、进程,是否存在,如果不存在,就创建新的。这也是从SystemServer进程到应用进程的进程之间的操作。 从应用程序线程到活动。 ApplicationThread收到消息后,通过h类(指Handler、UI线程),将消息发送到UI线程,在UI线程上启动APP应用程序,然后调用onCreated方法

二、有关进程。 1、APP应用程序的启动请求、传输过程: launcher=’AMS=’zygote=’AMS=’application。

2、上述进程,相应进程: Launcher进程=’systemserver进程=’zygote进程=’systemserver进程=’应用进程。

三.总结。 Launcher负责在Launcher进程中将启动APP应用程序的请求转发到AMS。 AMS在SystemSever进程中负责安全检查,启动APP应用程序的参数封装,通知Zygote进程创建应用进程,转发启动应用进程的请求,并携带启动应用进程所需的参数。 ActivityThread应用了一个进程,它使用从AMS传递的参数启动根Activity,然后启动APP应用程序,使用户可见。

启动某个activity,activity的启动方法