Android AIDL使用
2018-03-01 21:20
127 查看
1.Interface name must be unique
AS中创建AIDL文件的时候会报与.java文件名冲突。解决方法是先创建AIDL文件,后创建JAVA文件。
2.AIDL 支持下列数据类型:
Java 编程语言中的所有原语类型(如 int、long、char、boolean 等等)
String
CharSequence
List 中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 可选择将 List 用作“通用”类(例如,List)。另一端实际接收的具体类始终是 ArrayList,但生成的方法使用的是 List 接口。
Map 中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 不支持通用 Map(如 Map
非原参对象实现Procelable接口时要需要新建一个实体.aidl
3.什么情况下使用AIDL
只有允许不同应用的客户端用 IPC 方式访问服务,并且想要在服务中处理多线程时,才有必要使用 AIDL。 如果不需要执行跨越不同应用的并发 IPC,就应该通过实现一个 Binder 创建接口;或者,如果想执行 IPC,但根本不需要处理多线程,则使用 Messenger 类来实现接口。
4.java.lang.SecurityException: Binder invocation to an incorrect interface报错问题
是由于服务端工程AIDL包名与服务端工程中AIDL包名不一致引起的问题。
5.报Error:(259, 42) 错误: 找不到符号
是由于将java实体文件放在了AIDL文件夹中导致在AIDL接口方法中找不到类,需要在build.gradle中声明:
以上作用是查找java文件的时候也在aidl包下查找。
6. in,out,inout
非原语参数配置in,out,inout
in:数值通过aidl能够传入,并且在service中操作后传回来。
out:数值不能传入,但是能从service中传回来。
inout:数值能够传入传出
demo下载地址:http://download.csdn.net/download/whatfizzer/10265639
https://developer.android.com/guide/components/aidl.html#CreateAidl
AS中创建AIDL文件的时候会报与.java文件名冲突。解决方法是先创建AIDL文件,后创建JAVA文件。
2.AIDL 支持下列数据类型:
Java 编程语言中的所有原语类型(如 int、long、char、boolean 等等)
String
CharSequence
List 中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 可选择将 List 用作“通用”类(例如,List)。另一端实际接收的具体类始终是 ArrayList,但生成的方法使用的是 List 接口。
Map 中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 不支持通用 Map(如 Map
void setFruit(in Fruit); void setFruit(out Fruit); void setFruit(inout Fruit); 注意:应该将方向限定为真正需要的方向,因为编组参数的开销极大。
非原参对象实现Procelable接口时要需要新建一个实体.aidl
package *** procelable Fruit;
3.什么情况下使用AIDL
只有允许不同应用的客户端用 IPC 方式访问服务,并且想要在服务中处理多线程时,才有必要使用 AIDL。 如果不需要执行跨越不同应用的并发 IPC,就应该通过实现一个 Binder 创建接口;或者,如果想执行 IPC,但根本不需要处理多线程,则使用 Messenger 类来实现接口。
4.java.lang.SecurityException: Binder invocation to an incorrect interface报错问题
是由于服务端工程AIDL包名与服务端工程中AIDL包名不一致引起的问题。
5.报Error:(259, 42) 错误: 找不到符号
是由于将java实体文件放在了AIDL文件夹中导致在AIDL接口方法中找不到类,需要在build.gradle中声明:
sourceSets { main { java.srcDirs = ['src/main/java', 'src/main/aidl'] } }
以上作用是查找java文件的时候也在aidl包下查找。
6. in,out,inout
非原语参数配置in,out,inout
in:数值通过aidl能够传入,并且在service中操作后传回来。
out:数值不能传入,但是能从service中传回来。
inout:数值能够传入传出
demo下载地址:http://download.csdn.net/download/whatfizzer/10265639
https://developer.android.com/guide/components/aidl.html#CreateAidl
相关文章推荐
- Android 使用【AIDL】调用外部服务
- Android 使用【AIDL】调用外部服务
- Android 使用【AIDL】调用外部服务
- (转)使用android中的AIDL让Service与Activity通信(service回调activity)
- android进程间通信:使用AIDL
- Android AIDL使用详解
- Android SDK开发指南(翻译)系列三:Tools(一)--使用AIDL, 设计一个远程接口
- android进程间通信:使用AIDL
- [Android实例] Android 使用【AIDL】调用外部服务
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- android进程间通信:使用AIDL .
- android进程间通信:使用AIDL
- Android AIDL使用详解
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- Android 使用【AIDL】调用外部服务
- Android中RemoteService的使用详解(Aidl、IPC机制)
- 使用AIDL(AndRoid接口描述语言)设计和使用远程接口
- Android 四大组件之(2)Service实现原理以及AIDL语言的使用详解
- Android 使用【AIDL】调用外部服务
- android进程间通信:使用AIDL