Android中的binder和aidl机制

1、什么是binder

binder是android framework提供的,用于跨进程方法调用的机制,具有安全高效等特点。

我们知道,在 Android 系统中,每个应用程序都运行在一个独立的进程中,各个进程之间需要进行数据交换和调用,以实现各种功能。为了实现这个目的,binder应运而生。

2、binder基本使用

binder是一种架构,这种架构提供了服务端接口、binder驱动和客户端三个模块。

客户端通过binder远程调用服务端接口,binder驱动负责完成这次远程调用。

在android framework中提供了Binder类,一个类如果扩展Binder类,那么该类就有提供远程服务的能力,该类对象一旦创建,其内部就会创建一个隐藏的线程,用来接收binder驱动发送的消息,从而调用Binder类的onTransact()方法。

binder驱动从表现上看,就是在客户端和服务端传递各种消息,以完成跨进程调用。

在任意一个服务端binder对象创建时,同时也会在binder驱动中创建一个对应的mRemote对象,该对象也是binder类型。 客户端就是通过mRemote对象来访问远程服务的,相当于经过了一层代理。 这种机制提供了更好的安全性。

客户端通过获取远程服务在binder驱动中对应的mRemote对象,通过调用mRemote.transact方法从而实现对远程服务的调用。

从整个架构上看,就是服务端提供binder,binder驱动负责转发消息,客户端获取binder引用并调用。 粗略看很简单,细节是魔鬼。

4.AIDL与 Binder 的关系

AIDL(Android Interface Definition Language,Android 接口定义语言)是 Android 系统中用于实现进程间通信(IPC)的一种机制。AIDL 可以帮助开发者在不同的应用程序之间或不同进程之间实现远程方法调用,从而实现跨进程的数据共享和交互。

Binder 是 Android 系统中用于实现 IPC 的核心驱动程序,它可以为 AIDL 定义的接口提供底层支持。Binder 驱动程序通过管理进程间的连接、数据传输等操作,完成了基于 AIDL 的进程间通信功能。

AIDL 与 Binder 的关系可以理解为:AIDL 提供了描述跨进程间通信接口的语言,而 Binder 则是实现 AIDL 接口调用的内部框架。在 Android 应用程序中,一般都是通过在 AIDL 文件中定义跨进程访问的接口,并通过 Binder 实现这些接口,从而实现应用程序之间的通信。

5.使用Binder进行进程间通信例子

eg: 【Android】Binder(一)Binder的介绍和AIDL使用Binder的实例_aidl binder_我又来搬代码了的博客-CSDN博客

相关推荐
用户69371750013844 小时前
曾经安卓开发人手一个的 EventBus,为什么现在没人爱用了?
android·android studio
九皇叔叔6 小时前
MySQL ORDER BY 性能优化详解:Using filesort、联合索引、ASC/DESC 与覆盖索引
android·adb
OriginCoding6 小时前
用 AI Agent 协作完成一个 Android TOTP 应用:从需求边界到 v1.0.0
android·ai编程
杉氧9 小时前
React 灵魂:深入剖析 Hooks 与副作用(Side Effects)陷阱
android·前端·react native
又见情义10 小时前
RK3568 + RTL8211F 网络唤醒(WOL)功能适配全记录
android·网络·驱动开发
用户09340777351410 小时前
HarmonyOS WPS Open SDK 实践:registerApp 鉴权与就绪门禁
android·typescript·harmonyos
jike_202610 小时前
会议离线录音APP:无网络记录能力对比
android·智能手机·语音识别
always_TT11 小时前
【Python 字符串格式化:format() 方法】
android·开发语言·python
恋猫de小郭11 小时前
AI 时代,一个优化 Flutter 的重复代码工具 Deslop
android·前端·flutter
RisunJan11 小时前
Android 面试知识点整理
android·面试·职场和发展