当前位置: 首页 > news >正文

对android binder的一些疑问及解答

1上层做了那么多封装是否是过度了,难度增加就在于上层的一层层的封装。


    最底层直接ioctl和binder驱动交互(单纯c语言实现binder交互)
    第一层:IPCThreadState.transatct封装了对驱动的请求和接受
    第二层封装用IBinder.h里面的 transatct一个方法是最直接和容易理解的
    第三层封装: 服务端bbinder在 transatct里面抽象出了一个 模板方法onTransatct
    第四层封装:引入通信协议接口 ,以及bpbinder bbinder 对象,这样客户端和服务端就可以调用对象来执行传输,而不是简单的根据参数来一一对应
    至于如何封装的,这块应该是binder里面最难的了,当成盲盒吧,因为即使看明白了也会很快就忘,和后期的问题跟踪或解决关系也不大,基本永不上
    第五层封装:就是用aidl进行封装,主要是对协议接口的parcel数据自动打包和解包的封装以及自动生成bpbinder,bbinder对象
    每一层都对使用者来说都会变得更方便,但也隐藏了背后的原理。


    2 parcel的作用,传个值不是直接就可以吗

跨进程传递数据为什么要用parcel封装一层? parcel在flatten和unflaten里面会加入handler或binder的值,意思是类似与给快递加上了地址


    3 代理端是真的代理设计模式吗

其实就是代理端拿到了服务端的地址(handler),交给了驱动,驱动根据地址将数据放到服务端那里,并通知服务端
    之所以要设计出代理的这个概念,完全是上层封装虚拟出来的一个概念,其实并不是代理模式,代理类里并没有被代理对象的引用,只是一个简单的映射关系

http://www.lryc.cn/news/456340.html

相关文章:

  • 主流麦克风阵列有哪些?
  • 几个快速压缩图片大小的方法!
  • 怎么避免在pod产生-派生炸弹(Fork Bomb)? k8s(kubernetes)
  • MySQL中的嵌套查询
  • win10 提示pl2303hxa已停产,请联系供货商解决方案
  • 浙大数据结构:07-图5 Saving James Bond - Hard Version
  • 【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL69
  • 电商商品数据采集||高并发||多语言请求实例演示|京东|淘宝商品详情数据SKU价格
  • 云手机哪款好用?2024年云手机推荐对比指南
  • 无人机航测内业常用建模软件手册下载(上)
  • Python Django ORM 的工作原理
  • GoLang编程常用规范/工具
  • 数字王国里的虚拟人――技术、商业与法律解读
  • Java后端基础练习|请求参数
  • C# + SQLiteExpert 进行(cipher)加密数据库开发+Costura.Fody 清爽发布
  • MySQL 8.0 新特性之自增变量持久化
  • 网站建设公司哪家好?好的网站建设公司应该有哪些特别之处?
  • 香山南湖架构分析--FE
  • 【Linux的那些事】shell命名及Linux权限的理解
  • Visual Studio 2022 配置 Boost 库
  • 逻辑回归(下): Sigmoid 函数的发展历史
  • 快速理解mQ(三)——RabbitMQ 各种交换机的区别与应用
  • 【五分钟学会】YOLO11 自定义数据集从训练到部署
  • Redis学习(十二)连接数不足报错及分析修复:ERR max number of clients reached.
  • 八股文面试题总结(包含主流的面试经典题)
  • 一分钟掌握 Java22 新特性
  • 西安凭借入驻企业展示科技“硬”实力的数字媒体产业园
  • 【网络安全】利用XSS、OAuth配置错误实现token窃取及账户接管 (ATO)
  • 浙江所有省级医院体检报告查询上线浙里办!
  • 支付宝支付Java+uniapp支付宝小程序