1、android AIDL中支持的数据类型
2
第一类是 Java 编程语言中的基本类型( int、long、char、boolean,char )
不支持基础类型的封装类型(Integer...)
第二类包括 String、List、Map 和 CharSequence
Map,List的类型需要是1的类型(Integer等可支持)或者是Parcelable,aidl.
List 中的所有元素都必须是以上支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 可选择将 List 用作“通用”类(例如,List<String>)。另一端实际接收的具体类始终是 ArrayList,但生成的方法使用的是 List 接口。
List<int> :is not yet supported
List<Integer> :Failed to resolve 'Integer'
int[] 最后使用。
还有一种方法,直接List,不要指明类型。
Map 中的所有元素都必须是以上支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 不支持通用 Map(如 Map<String,Integer> 形式的 Map)。 另一端实际接收的具体类始终是 HashMap,但生成的方法使用的是 Map 接口
第三类是其他 AIDL 生成的 interface
第四类是实现了 Parcelable protocol 的自定义类。
常量只能用int,string
2、android AIDL中的in,out,inout
in 表示输入参数,即服务端可以修改该类型
out 表示输出参数,即客户端可以修改该类型,服务器端不行
inout 表示客户端和服务端都可以修改该类型
in表示由客户端设置,修饰输入参数,非基本类型的输入参数必须使用in修饰。
out表示由服务器端设置,修饰输出参数,非基本类型的输出参数必须使用out修饰。
inout表示既是输入参数,也是输出参数。应该将方向限定为真正需要的方向,因为编组参数的开销极大。
表示相反,有空需要验证
3、自定义对象
需要定现Parcelable
自定义类,enum,interface 后续补充
自定义类:parcelable AIDLBook
enum :parcelable RfidScanMode
接口:定义aidl的interface ,比如:IBarCodeReceiver
参考:
https://blog.csdn.net/lei7143/article/details/78327332
https://www.jianshu.com/p/ddbb40c7a251
https://www.jianshu.com/p/c4f57c51b214
https://www.jianshu.com/p/e07015c55f1e
网友评论