android-aidl5

aidl类是实现Manager和Service通信的桥梁。

例如在修改Android Wifi功能的时候看到WifiManager管理WifiService;

AIDL是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口。

比如onclick(),用oneway修饰,异步调用,监听屏幕点击,点击后各种处理后,才会回调到。

aidl的回调可以使用这种:

void registerVolumeCallback(in IBinder binder);

这里的binder则是客户端在自己程序里面实现接口。如

复制代码
private final ICarVolumeCallback mVolumeChangeCallback = new ICarVolumeCallback.Stub() {

本身aild的实现就是一个binder,所以可以传递进去,然后服务器里面去回调binder.xxx函数。客户端去实现这个接口的一些函数。

注意:in、out、inout,是接收发送对象的所有数据,

aidl中onway、in、out、inout关键字

  1. oneway可以修饰AIDL文件里的方法,oneway修饰的方法在用户请求相应功能时不需要等待响 应可直接调用返回,非阻塞效果,该关键字可以用来声明接口或者声明方法,如果接口声明中用到了oneway关键字,则该接口声明的所有方法都采用oneway方式。

oneway代表这个Binder接口是异步调用;

oneway void request();//异步执行

同一个binder服务中的oneway方法被多次调用会排队执行;

不同binder服务中的oneway方法被同时调用会同时执行;

tips: 一次Binder通信最大可以传输多大的数据为1M-8K;

binder驱动对于oneway的调用是类似于handler sendmessage那样的,挨个处理,所以如果服务端的oneway接口处理太慢而客户端调用太多的话,来不及处理的调用会占满binder驱动的缓存,导致其他调用抛出transaction failed ;

  1. in 由cilent端流向server端,server端可以收到此对象的所有数据,收到之后会重新创建一个新的对象将数据填充进去,因为cilent端和server端是两个不同的对象,所以server端对数据的修改不会影响到client端的对象;

service端对数据的改变不会反馈到client端;

非基本数据类型和string的参数类型必须加参数修饰符, in的意思是只输入;

  1. out 是由server端流向client端,server端实际上不接收client传入的数据;在service端自己处理数据后结果返回到client端,client接收service端改变的数据结果;

  2. inout 对象可以双向流动,即server端能收到cilent发过来的对象的数据,server端对此对象的操作也能影响到cilent端;


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/fengzhiqi1993/article/details/126536035

相关推荐
Gracker1 小时前
SmartPerfetto 1.19.0:换过分析引擎之后,这次更新了什么
android
HQL_seven5 小时前
【Android】BroadcastReceiver 详解
android
_祝你今天愉快7 小时前
Paint Cavans高级绘制:[二] Paint-滤镜,XFERMODE
android
小乖写代码7 小时前
字段获取代码(Android) · Android Input Examples
android·whatsapp·账号注册
booboosui7 小时前
停一个活只有杀进程:界面上少了「说点要求」
android
传奇开心果编程9 小时前
【Flutter踩坑排雷】第28课:平台目录缺失与修复坑|`flutter create` 的“重建”与“覆盖”边界
android·flutter·ios·移动开发·跨平台·dart·声明式ui
longxibo19 小时前
【AIBIZ低代码平台:能长出业务系统的平台】
android·低代码·rxjava
AI_Gump1 天前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
疯华整猫1 天前
否决 Flutter 提案那天,我发现自己也说不清 Framework 管什么
android
传奇开心果编程2 天前
【Flutter踩坑排雷】第25课:ScrollController 误用坑|跳转失效、监听泄漏与“控制器未附加”
android·flutter·ios·移动开发·跨平台·dart·声明式ui