美文网首页AIDL
Android中AIDL的作用是什么?它所支持的参数类型是?默认

Android中AIDL的作用是什么?它所支持的参数类型是?默认

作者: 一个小草人 | 来源:发表于2018-05-16 10:19 被阅读0次

    1.Android中AIDL的作用是什么?

    AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。

    设计这门语言的目的是为了实现进程间通信,尤其是涉及多线程并发情况下的进程间通信。

    我们只需要编写AIDL文件,系统就会自动为我们生成代码,大大简化了Android程序员的工作。

    2.它所支持的参数类型是?

    Java 编程语言中的所有原语类型(如 int、long、char、boolean 等等)

    String

    CharSequence;

    List:里面每个元素都必须能够被AIDL支持;List支持泛型(如List<String>);另一端实际接收的具体类始终是 ArrayList,但生成的方法使用的是 List 接口

    Map:里面每个元素都必须能够被AIDL支持,包括key和value;Map是不支持泛型的;另一端实际接收的具体类始终是 HashMap,但生成的方法使用的是 Map 接口

    Parcelabl:所有实现了Parcelable接口的对象

    AIDL:所有的AIDL接口本身也可以在AIDL文件中使用

    3.默认情况下AIDL的调用过程是同步还是异步?

    同步,客户端调用远程服务的方法,被调用的方法运行在服务端的Binder线程池中,同时客户端线程会被挂起,这个时候如果服务端方法执行比较耗时,就会导致客户端线程长时间地阻塞在这里,如果这个客户端线程是UI线程的话,就到导致客户端ANR。

    4.如何指定AIDL为异步调用?

    通过接口回调;

    首先需要提供一个AIDL接口,里面声明用户感兴趣的事件,然后在服务端进行注册,这样当用户感兴趣的事情发生时,服务端就会回调,由于回调接口里声明的方法运行在客户端的线程池,客户端不能在它里面去访问UI相关的内容,如果要访问UI,可以使用handler切换到UI线程。当页面销毁时,要记得解注册,由于是多进程,注册和解注册需要借助RemoteCallbackList来实现。

    =======================================================================

    注:

    同步调用、异步调用区别

    所谓同步调用,在发起一个函数或方法调用时,没有得到结果之前,该调用就不返回,直到返回结果;异步调用的概念和同步相对,在一个异步调用发起后,被调用者立即返回给调用者,但调用者不能立刻得到结果,被调用者在实际处理这个调用的请求完成后,通过状态、通知或回调等方式来通知调用者请求处理的结果。

    相关文章

      网友评论

        本文标题:Android中AIDL的作用是什么?它所支持的参数类型是?默认

        本文链接:https://www.haomeiwen.com/subject/hkqedftx.html