android aidl-读艺术探索有感
2018-05-15 本文已影响10人
山代
aidl用于android中进程间通信,远程服务端的接口方法在aidl中声明,当客户端 绑定服务器成功后返回的binder对象转成aidl支持的类型并调用之前声明的接口方法即可实现客户端与远程服务器的跨进程通信。
其实不提供aidl文件也可以实现Binder,之所以提供aidl文件,是为了方便系统为我们生成代码,我们也可以手动写一个Binder。
aidl支持如下数据类型:
1、基本数据类型
2、String和CharSequence
3、ArrayList(里面的每个元素必须支持aidl)
4、HashMap(里面的每个元素必须支持aidl,包括key和value)
5、Parcelable
6、aidl本身
客户端调用远程服务是异步的,但是链接服务成功后执行远程服务方法是同步的,如果该客户端是UI线程就有可能因为服务端的耗时方法导致ANR。