csdn在线学习课程,课程咨询答疑和新课信息:QQ交流群:422901085进行课程讨论

android跨进程通信实战视频课程(加群获取优惠)

aidl的一些关键字:

1、oneway介绍

oneway 关键字用于修饰远程调用的行为,被oneway修饰了的方法不可以有返回值,也不可以有带out或inout的参数。
使用oneway时,远程调用不会阻塞;它只是发送事务数据并立即返回。接口的实现最终接收此调用时,是以正常远程调用形式将其作为来自 Binder 线程池的常规调用进行接收。

2、in,out,inout介绍

in、out、inout表示跨进程通信中数据的流向(基本数据类型默认是in,非基本数据类型可以使用其它数据流向out、inout)。

in 表示数据只能由客户端流向服务端。(表现为服务端修改此参数,不会影响客户端的对象)

out 表示数据只能由服务端流向客户端。(表现为服务端收到的参数是空对象,并且服务端修改对象后客户端会同步变动)

inout 则表示数据可在服务端与客户端之间双向流通。(表现为服务端能接收到客户端传来的完整对象,并且服务端修改对象后客户端会同步变动)

注意如果aidl中发现对象类型参数可以不带in,out,inout任何一个,那么它一定属于默认in类型,而且也不能强制给其加上out或inout
具体这里可以看google官方文档的原话:
https://developer.android.google.cn/guide/components/aidl#Create

When defining your service interface, be aware that:Methods can take zero or more parameters, and return a value or void.
All non-primitive parameters require a directional tag indicating which way the data goes. Either in, out, or inout (see the example below).
Primitives, String, IBinder, and AIDL-generated interfaces are in by default, and cannot be otherwise.

Primitives, String, IBinder, and AIDL-generated interfaces are in by default —这句就说明了元数据类型,String ,IBinder,还有AIDL生成的接口那默认就是in,不能为其他

3、Binder跨进程双向通信的实现


这里其实一共只需要分为3步:
1.首先client通过bindService方式获取到了服务端的IServer接口对象,既可以正常调用服务端的接口
2、这里服务端接口是IServer里面有一个setCallback方法,这个方法参数是一个ICallbackClient类型实体接口对象,这个接口对象由客户端进行实现,服务端进行调用
3、服务端在客户端setCallback之后就获取了客户端的ICallbackClient类型的对象,调用改对象的方法就可以与客户端进行通信

4、linktodeath介绍

死亡通知是为了让Bp端(客户端进程)进能知晓Bn端(服务端进程)的生死情况,当Bn端进程死亡后能通知到Bp端。

定义:AppDeathRecipient是继承IBinder::DeathRecipient类,主要需要实现其binderDied()来进行死亡通告。
注册:binder->linkToDeath(AppDeathRecipient)是为了将AppDeathRecipient死亡通知注册到Binder上。
Bp端只需要覆写binderDied()方法,实现一些后尾清除类的工作,则在Bn端死掉后,会回调binderDied()进行相应处理。

 @Overridepublic void setCallback(IChangeCallback callback) throws RemoteException {mCallBack = callback;//监听客户端的进程是否死了mCallBack.asBinder().linkToDeath(new DeathRecipient() {@Overridepublic void binderDied() {Log.i("test","linkToDeath binderDied");}},0);}

Android Framework实战开发-binder通信常见(oneway,in,out,inout)元素介绍及binder双向通信的实现相关推荐

  1. 字节大佬封神之作《Android Framework高级开发笔记》,完整版开放下载

    在现阶段的Android开发工作中,无论是底层,还是应用层,Framework都至关重要.Framework的火热程度,相信我也不必再赘述. 为帮助大家深度学习Framework背景及它的巨大作用,这 ...

  2. Android FrameWork底层开发视频全套

    我的百度云连接 链接: https://pan.baidu.com/s/1i64xvjJ 密码: 5ptb 我的百度云连接 链接: https://pan.baidu.com/s/1i64xvjJ 密 ...

  3. android FrameWork底层开发视频

    android FrameWork底层开发视频,可配合 <深入理解android.pdf>(这个资源 很多),<Android-Framework框架分析> 学习 https: ...

  4. Android FrameWork底层开发视频

    =========================== 链接: https://pan.baidu.com/s/1iZ1SXS4Oy8drjaQOJ2kR4g 资源提取码获取方式,关注下面微信公众号, ...

  5. Android系统中的Binder通信机制分析(7)- Java 层的 Binder 机制

    声明 其实对于Android系统Binder通信的机制早就有分析的想法,记得2019年6.7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾- 文中参考 ...

  6. Android FrameWork 底层开发

    1. FrameWork 底层开发 Android: 底层开发 开发核心配置 软件工程师学习与Android 底层与硬件层次的开发,主要学习Android 的OS开发使用, Android底层固化的 ...

  7. android framework实战车机手机系统开发环境相关问题补充

    android源码不建议用virtualbox进行编译,如果要也建议vmware Please ensure KVM is properly installed and usable 这个属于kvm虚 ...

  8. (android 地图实战开发)4地图偏移量解决方案

     1  地图偏移量问题的来源: 国家出于安全考虑,为了不让重要的位置的地理信息暴露,在所有的电子地图服务提供商都需要给地图数据加上偏移和加密,所以我们在使用google,baidu 等电子地图服务商的 ...

  9. android framework 底层开发视频

    找的视频教程 链接: https://pan.baidu.com/s/1gf1EH79G9gFNzgmrgRjg7Q 提取码: axv4

  10. Android10.0 Binder通信原理(八)-Framework层分析

    摘要:本节主要来讲解Android10.0 Binder 在Framework的使用分析 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,An ...

最新文章

  1. php禁止网页抓取,服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站 - 龙笑天下...
  2. linux r服务安装失败,R包:RCurl和curl包在Linux上安装失败
  3. java目录文件夹操作
  4. 数据中台全景架构及模块解析
  5. linux设备驱动程序中的阻塞机制
  6. 豆瓣读书评分 8.7 以上! 这 40 本 Python 畅销书包邮送
  7. 有头结点单链表的逆置
  8. php正则匹配域名不包含端口_3分钟短文 | PHP极速匹配子字符串,你是怎么做的?...
  9. XFire 配置文件注意事项
  10. 技术圈几个牛逼的公号推荐给大家
  11. gson将JSON字符串转成Java对象
  12. 《星科快报》第二期:元宇宙之道.
  13. 关于计算机取代学校的英语作文,关于网络教室将取代传统的教室英语作文
  14. 计算机教室使用与管理制度,《计算机教室使用与管理制度》
  15. 一键删除qq空间说说
  16. vip2-day22 MySQL 基础语句
  17. 【2023校招刷题】笔试及面试中常考知识点、手撕代码总结
  18. waiting for changelog lock.
  19. 华为薪资垫底,腾讯阿里被逆袭,第一竟然是…
  20. 保持冷静散热运行 讯景HD7870报价1399

热门文章

  1. 巨象指纹浏览器可以帮助用户做些什么?
  2. php画图取色,图片取色,涂抹代码,Python交流,技术交流区,鱼C论坛 - Powered by Discuz!...
  3. 硬盘格式 FAT32 NTFS exFAT扫盲
  4. RxJava串行执行任务
  5. 把手机自带计算机软件,怎样删除手机自带软件
  6. Sping入门(1) 了解依赖注入(DI)和应用切片(AOP)
  7. 利用python批量查询企业信息_用Python批量查询域名(并行化,附源代码)
  8. 数显之家快讯:【SHIO世硕心语】父亲的格局,母亲的情绪,是一个家最好的风水
  9. python 离散数学 判断单射 双射 满射
  10. STL——标准模板库