根activity的启动过程--控制转移

来源:互联网 发布:linux所有网卡的网关 编辑:程序博客网 时间:2024/05/20 06:29

从应用启动的角度来看,activity分为两种activity---根activity和非根activity。根activity是在手机桌面用户点击启动的activity,也就是在manifest.xml文件中

action android:name="android.intent.action.MAIN" category android:name="android.intent.category.LAUNCHER" 

的activity,假设这个activity为MainActivty,他的启动对应着应用的启动。根activity的启动涉及Launcher,ActivityManagerService,MainActivity。下面就介绍下这三个进程之间的在启动根Activity时是如何协作的。

(1)用户点击桌面上的一个应用图标,Launcher向ActivityManagerService发送一个请求启动MainActivity的请求

(2)ActivityManagerService在收到Launcher发送的请求后,首先保存要启动的activity信息,然后给Launcher发送一个进入终止状态的进程间通信请求

(3)Launcher在收到ActivityManagerService发送的进入终止状态的进程通信请求后,就会进入终止状态,通知发送通知告诉ActivityManagerService自己已经进入终止状态,以便ActivityManagerService可以继续处理启动MainActivity的操作。

(4)由于是根Activity,因此没有进程可以用来运行MainActivity。这时候ActivityManagerService就会新建一个进程用来运行MainActivity

(5)新的进程创建成功后会通知ActivityManagerService自己已经创建成功,可以运行MainActivity

(6)ActivityManagerService在收到新进程创建成功的通知后就会根据自己保存的MainActivity的信息启动MainActivity

0 0
原创粉丝点击