Android应用程序构成

本文详细阐述了Android应用的四大组件如何运作,以及Binder进程间通信在其中的作用,重点讲解了ServiceManager的角色和Binder驱动程序的原理。通过分析ServiceManager启动、Service代理获取等四个情景,揭示了Binder在Android系统中的核心地位和工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

binder

Android应用程序是由ActivityServiceBroadcast ReceiverContent Provider四种类型的组件构成的, 它们有可能运行在同一个进程中, 也有可能运行在不同的进程中。 此外, 各种系统组件也运行在独立的进程中, 例如, Activity管理服务ActivityManagerService和Package管理服务PackageManagerService都运行在系统进程System中。

image-20200725142202987

Android系统是基于Linux内核开发的。 Linux内核提供了丰富的进程间通信机制, 如管道(Pipe) 、 信号(Signal) 、 消息队列(Message) 、 共享内存(Share Memory) 和 插口(Socket) 等。

image-20200725142429073

而 Android系统开发了一套新的进程间通信机制——Binder。

Binder进程间通信机制在进程间传输数据时, 只需要执行一次复制操作, 所以,提高了效率,节省了内存空间。Binder进程间通信机制是在OpenBinder的基础上实现的, 它采用CS通信方式, 其中, 提供服务的进程称为Server进程, 而访问服务的进程称为Client进程。

同一个Server进程可以同时运行多个组件来向Client进程提供服务, 这些组件称为Service组件。同一个Client进程也可以同时向多个Service组件请求服务, 每一个请求都对应有一个Client组件( Service代理对象) 。

Binder进程间通信机制的每一个Server进程和Client进程都维护一个Binder线程池来处理进程间的通信请求, 因此, Server进程和Client进程可以并发地提供和访问服务。 Server进程和Client进程的通信要依靠运行在内核空间Binder驱动程序来进行。

Binder驱动程序向用户空间暴露了一个设备文件/dev/binder, 使得应用程序进程可以间接地通过它来建立通信通道。

Service组件在启动时, 会将自己注册到一个Service Manager组件中, 以便Client组件可以通过Service Manager组件找到它。

因此, 我们将Service Manager组件称为Binder进程间通信机制的上下文管理者, 同时由于它也需要与普通的Server进程和Client进程通信, 我们也将它看作是一个Service组件, 只不过它是一个特殊的Service组件。

Binder进程间通信机制 :

Binder进程间通信机制

ClientServiceService Manager 运行在用户空间, 而Binder驱动程序运行在内核空间, 其中, Service ManagerBinder驱动程序由系统负责提供, 而 ClientService 组件由应用程序来实现。 ClientServiceService Manager均是通过系统调用 openmmapioctl 来访问设备文件 /dev/binder, 从而实现与 Binder 驱动程序的交互, 而交互的目的就是为了能够间接地执行进程间通信。

分析 Binder 进程间通信机制的四个使用情景, 分别是:

(1) Service Manager的启动过程。

(2) Service Manager代理对象的获取过程。

(3) Service组件的启动过程。

(4) Service代理对象的获取过程。

上述四个使用情景都是基于Binder进程间通信机制的C/C++实现来分析

Binder驱动程序

Binder进程间通信库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onnx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值