Binder的使用

应用程序端:

Client端的Binder要继承Server提供的公共接口类并实现公共函数。但这不是真正的实现,而是对远程函数调用的包装:将函数参数打包,通过Binder向Server发送申请并等待返回值。

Server端:

Server端定义另一个Binder抽象类处理来自Client的Binder请求数据包,其中最重要的成员是虚函数onTransact()。该函数分析收到的数据包,根据收到的ID决定调用相应的接口函数处理请求,并将处理结果返回给Client端。

使用AIDL(Android Interface Define Language)定义一个抽象接口类封装Server所有功能,包含了一系列纯虚函数留待Server和Proxy各自实现。这些函数以ID的方式呈现,完成跨进程调用。