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

相关推荐
luanma1509801 分钟前
Laravel 7.X核心特性深度解析
android·开发语言·php·lua·laravel
运维老曾2 分钟前
Flink 1.20 使用自带jdbc source 操作步骤
android·adb·flink
陆业聪2 小时前
2026 年还在靠「感觉」调性能?Android Profiler 这样用才对
android·人工智能·性能优化
草莓熊Lotso2 小时前
MySQL 多表连接查询实战:内连接 + 外连接
android·运维·数据库·c++·mysql
草莓熊Lotso3 小时前
Linux 进程信号深度解析(下):信号的保存、阻塞与捕捉
android·linux·运维·服务器·数据库·c++·性能优化
小羊子说12 小时前
Android系统中 socketpair 的源码解读与应用分析小结
android·java
FL4m3Y4n13 小时前
MySQL索引原理与SQL优化
android·sql·mysql
我命由我1234514 小时前
Android Gradle - Gradle 自定义插件(Build Script 自定义插件、buildSrc 自定义插件、独立项目自定义插件)
android·java·java-ee·kotlin·android studio·android-studio·android runtime
冬奇Lab14 小时前
AudioFlinger混音机制深度解析
android·音视频开发·源码阅读