Android中AIDL的作用是什么?它所支持的参数类型是?默认情况下AIDL的调用过程是同步还是异步?如何指定AIDL为异步调用?

1,AIDL 翻译过来就是Android Interface Definition Language 安卓接口定义语言,主要用于进程间通信使用,他让Android开发人员在使用Binder通信的时候能更加的便捷(少写了代码个干活)

2,传递数据支持基本数据类型,还有实现了Parceable接口的java bean

3,默认情况下AIDL调用过程是同步的,例如A进程请求与B进程通信,A会等到B海枯石烂的,如果A为主线程调用的话,那么B如果执行时间过程很可能就直接ANR了,并且注意B那边是很多进程都可以调用的,所以要注意同步数据,并且B那边被调用执行的时候都是在子线程,如果有回调的话,那么也是在子线程,所有A在获取B那边的回调数据后如果要更新ui要注意不能在子线程更新ui

4,可以传回调到B端,记得注册以后要解注册,因为是多个进程的操作所以在解注册的时候会有一点点不同,并不是调用一个unRegister就可以了,要使用RemoteCallBackList,然后在注册,解注册


猜你喜欢

转载自blog.csdn.net/lovelyprogrammer/article/details/80306208