• 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端;

  • 相关阅读:
    C语言函数指针简介
    ShellExecute的用法
    1.5-18:鸡尾酒疗法
    B. AND Sequences
    原来都是crontab惹的祸,服务器系统差点重置了/呜呜呜
    65%更小的APK和70%更少的内存:如何优化我的Android App的内存
    Python NLP教程之知识图谱,从文本构建知识,实现从文本或在线文章中提取知识库的管道(教程含源码)
    Vue动态绑定class
    <一>继承的基本意义
    flask-sqlalchemy 绑定多个数据库并实现多数据库迁移
  • 原文地址:https://blog.csdn.net/fengzhiqi1993/article/details/126536035