浅谈binder-系列2

一: 简介

在整个Android系统里面,所有的应用程序都是由Android 系统里面的ActivityServiceBroadcastContentProvider这四大组件中的一个或者多着拼接而成的,

这四大组件所涉及到的的进程间的通信底层都是依赖于Binder IPC通信机制。比如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅于此,

整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信)方案,比如activity启动另一个activity,activity发送广播等,当然也存在部分其他的IPC方式,比如

Zygote通信便是采用socket,当在桌面点击一个app图标启动对应的应用时候(之前从来都没打开过),此时AMS检测到没有对应的应用进程的时候,就会发起一个socket请求给

SystemServer进程,此时SystemServer会与Zygote进程采用socket通信来创建对应的应用程序进程,默认的情况下会把这个应用的包名作为这个进程的进程名字,其中pid由

操作系统来进行生成。他们之间的关系可以用下面图1来表示,要深入了解Binder机制,我们将通过阅读源码和画图的两种方式梳理清楚整个过程.

 

                                            图1

 

(1)问题1:为什么SystemService进程和Zygote进程之间的通信采用的是socket,而不是大名鼎鼎的binder呢?下面我们继续深入的研究这个问题

我们高中的时候生物课上面学习过一种方法论,假设演绎法,就是对未知问题的不清楚或者也不知道如何入手研究的时候,我们先假定一种或者几种

结论,然后在从结论去推导,最终得出正确的答案.

假设1:是不是SystemService进程和Zygote进程之间的通信采用的是socket这种机制性能比Binder更佳?

我们在前面的浅谈binder-系列1文章中对比了进程间通信的几种方式,发现socket在传输性能上和安全性上并没有比binder优越多少,可以翻看之前的文章

<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值