Android中怎么利用Binder实现跨进程通信

发布时间:2021-06-26 14:37:26 作者:Leah
来源:亿速云 阅读:529

Android中怎么利用Binder实现跨进程通信,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

目录

Android中怎么利用Binder实现跨进程通信


  1. Binder到底是什么?

Android中怎么利用Binder实现跨进程通信

在本文的讲解中,按照 大角度 -> 小角度 去分析Binder,即:

从而全方位地介绍 Binder,希望你们会喜欢。


2. 知识储备

在讲解Binder前,我们先了解一些基础知识

2.1 进程空间分配

Android中怎么利用Binder实现跨进程通信

2.2 进程隔离

为了保证 安全性 & 独立性,一个进程 不能直接操作或者访问另一个进程,即Android的进程是相互独立、隔离的

2.3 跨进程通信(  IPC

Android中怎么利用Binder实现跨进程通信

Binder,就是充当 连接 两个进程(内核空间)的通道。


3. Binder 跨进程通信机制 模型

3.1 模型原理

Binder 跨进程通信机制 模型 基于 Client - Server 模式,模型原理图如下:

相信我,一张图就能解决问题

Android中怎么利用Binder实现跨进程通信

3.2 额外说明

说明1:Client进程、Server进程 & Service Manager 进程之间的交互都必须通过Binder驱动(使用 openioctl文件操作函数),而非直接交互 **

原因:

  1. Client进程、Server进程 & Service Manager进程属于进程空间的用户空间,不可进行进程间交互

  2. Binder驱动 属于 进程空间的 内核空间,可进行进程间 & 进程内交互


所以,原理图可表示为以下:

虚线表示并非直接交互

Android中怎么利用Binder实现跨进程通信

说明2:  
Binder驱动 & Service Manager进程 属于 Android基础架构(即系统已经实现好了);而Client 进程 和 Server 进程 属于Android应用层(需要开发者自己实现)

所以,在进行跨进程通信时,开发者只需自定义Client  &  Server 进程 并 显式使用上述3个步骤,最终借助 Android的基本架构功能就可完成进程间通信

Android中怎么利用Binder实现跨进程通信

说明3:Binder请求的线程管理

4. Binder机制 在Android中的具体实现原理

步骤1:注册服务

注册服务后,Binder驱动持有 Server进程创建的Binder实体

步骤2:获取服务

Android中怎么利用Binder实现跨进程通信

此时,Client进程与 Server进程已经建立了连接

步骤3:使用服务

Client进程 根据获取到的 Service信息(Binder代理对象),通过Binder驱动 建立与 该Service所在Server进程通信的链路,并开始使用服务

步骤1: Client进程 将参数(整数a和b)发送到Server进程

步骤2:Server进程根据Client进要求 调用 目标方法(即加法函数)

步骤3:Server进程 将目标方法的结果(即加法后的结果)返回给Client进程

Android中怎么利用Binder实现跨进程通信

原理图

Android中怎么利用Binder实现跨进程通信


5. 优点

对比 LinuxAndroid基于Linux)上的其他进程通信方式(管道/消息队列/共享内存/信号量/Socket),Binder 机制的优点有:


6. 总结

Android中怎么利用Binder实现跨进程通信

定义

Android中怎么利用Binder实现跨进程通信


看完上述内容,你们掌握Android中怎么利用Binder实现跨进程通信的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. 谈谈Android Binder机制及AIDL使用
  2. 3. Android binder设计篇

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android binder

上一篇:如何实现对angularJs中$sce服务安全显示html文本

下一篇:如何用ShardingSphere5.0.0-alpha实现mysql读写分离

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》