根activity的启动过程--控制转移
2015-12-16 00:22
183 查看
从应用启动的角度来看,activity分为两种activity---根activity和非根activity。根activity是在手机桌面用户点击启动的activity,也就是在manifest.xml文件中
的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
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
相关文章推荐
- 用get方法传输数据到服务器
- 自定义SlideMenu侧滑菜单
- Java的安全性和可移植性
- 自增build ID配置
- java RMI 注册服务
- hdu 1874 畅通工程续(最短路)
- 排序算法
- hdu1203 I NEED A OFFER!
- Android启动出现白屏的解决办法(theme)
- 基类和派生类的构造函数
- HDU 3926 Hand in Hand(判断同构)
- Java回炉之IO流(二)使用规律
- Java @SuppressWarnings
- 用IDEA打成可执行jar包时遇到的问题
- Pascal triangle (杨辉三角)制表符
- 浅析字符串操作方法slice、substr、substring及其IE兼容性
- Android图文详解属性动画
- ES6个人学习整理(三)——解构赋值
- hdu1069 Monkey and Banana
- MAC 上 mysql 的编码设置