Android进程启动流程简析
来源:smartzheng     阅读:487
微上宝科技
发布于 2019-02-24 21:30
查看主页
WechatIMG276.jpeg

自己画了一张简单流程图
启动一个新进程主要涉及四步:
1、发送启动进程的需求,可能是Launcher启动一个新的APP,或者者APP开启独立进程或者其余APP

2、发送需求的进程通过Binder通信机制与SystemServer进程通信,通过运行在其中的ActivityManagerService来执行下一步流程

3、AMS通过Socket将创立新进程的请求发送给Zygote进程,在Zygote启动后会执行runSelectLoop方法来等待创立进程请求,当接收到AMS的请求之后fork出新进程,并创立Binder线程池,将新进程的主线程加入到其中,这样新进程也可以使用Binder通信机制了。

4、Zygote进程通过Binder与新开启的应用进程通信,ActivityThread的内部类ApplicationThread作为跨进程通信的桥梁(8.0之后采用AIDL实现,之前使用的是代理商模式),ApplicationThread运行在Binder线程中,所以最后需要通过线程切换(H.sendMessage)来进入主线程

由此可见,一个新进程的创立涉及4个进程,3次跨进程通信,2次为Binder,1次为Sockt

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
iPhone怎样看电脑上的视频?教你轻松设置
程序员编程10大哲理!值得收藏
【福利:精美T恤免费送】轻量级企业私有云 JimV 分享
Python字符串开头的b"、u"、r"与中文乱码
web前台入门到实战:CSS 3D动画(魔方效果,多重立体图,圆柱效果,齿轮效果)
首页
搜索
订单
购物车
我的