• AIDL学习


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

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

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

    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 ;

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

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

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

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

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

  • 相关阅读:
    程序员的出路是什么?
    java线程池并发实现代码模板
    详解C++静态多态和动态多态的区别
    期中考misc复现
    2024 极术通讯-紫光新一代车规MCU获功能安全最高认证,携手安谋科技深化车芯市场布局
    Android学习笔记 2. Button
    Dubbo和Spring Cloud微服务架构对比
    go-fastdfs分布式文件存储集群搭建和测试
    【Java】之Java8新特性
    RUST 和 GO 如何管理它们的内存
  • 原文地址:https://blog.csdn.net/fengzhiqi1993/article/details/126536035