我是靠谱客的博主 健壮长颈鹿,最近开发中收集的这篇文章主要介绍AIDL默认支持参数类型、自定义类型参数、onway in out inout关键字说明,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Aidl默认支持的参数类型

AIDL文件支持的数据类型:
        ①java基本类型(byte、boolean、char、short、int、float、long、double)
        ②String和CharSequence;
        ③List:只支持ArrayList,里面每个元素都必须能够被AIDL支持;
        ④Map:只支持HashMap,里面的每个元素都必须被AIDL支持,包括key和value;
        ⑤Parcelable:所有实现了Parcelable接口的对象;
        ⑥AIDL:所有的AIDL接口本身也可以在AIDL文件中使用;
        注:
            AIDL中除了基本数据类型,其他类型的参数必须标上方向:in、out或者inout;
            in:纯粹的输入参,这意味着是从客户端到服务器的数据;
            out:参数是纯粹的输出,这意味它的数据是通过服务器到客户端的;
            inout:参数是输入也是输出,客户端的值在服务器可能会被修改;

 

二、AIDL自定义类型参数

    1、自定义类型必须实现Parcelable接口,并且实现Parcelable接口的public void writeToParcel(Parcel dest, int flags)方法 。
    2、自定义类型中必须含有一个名称为CREATOR的静态成员,该成员对象要求实现Parcelable.Creator接口及其方法。
    3、 创建一个aidl文件声明你的自定义类型。
Parcelable接口的作用:实现了Parcelable接口的实例可以将自身的状态信息(状态信息通常指的是各成员变量的值)写入Parcel,也可以从Parcel中恢复其状态。 Parcel用来完成数据的序列化传递。

 

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

1、oneway关键字
    正常情况下Client调用AIDL接口方法时会阻塞,直到Server进程中该方法被执行完。oneway可以修饰AIDL文件里的方法,oneway修饰的方法在用户请求相应功能时不需要等待响应可直接调用返回,非阻塞效果,该关键字可以用来声明接口或者声明方法,如果接口声明中用到了oneway关键字,则该接口声明的所有方法都采用oneway方式。(注意,如果client和Server在同一进程中,oneway修饰的方法还是会阻塞),oneway只能针对某一个接口,不能直接定义方法。 方法必须是void类型的返回值类型

2、in关键字
    非基本数据类型和string的参数类型必须加参数修饰符,in的意思是只输入,既最终server端执行完后不会影响到参数对象

3、out关键字
    与in相反,out修饰的参数只能由server写入并传递到client,而client传入的值并不会传递到server,使用out修饰,如果参数是自定义了类型,必须实现parcelable接口,并且实现public void readFromParcel(Parcel in)方法

4、inout关键字
    被inout修饰的参数,既可以从client传递到server,也可以server传递到client,使用out修饰,如果参数是自定义了类型,必须实现Parcelable接口,并且实现public void readFromParcel(Parcel in)方法

如果aidl中使用了自定义类型,必须实现Parcelable接口,并新建一个和自定义类型名相同的aidl,内容就是parcelable 接口名称

最后

以上就是健壮长颈鹿为你收集整理的AIDL默认支持参数类型、自定义类型参数、onway in out inout关键字说明的全部内容,希望文章能够帮你解决AIDL默认支持参数类型、自定义类型参数、onway in out inout关键字说明所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部