Android Studio 创建AIDL以及Binder 原理

复习Android 开发艺术探索 第2章 IPC机制 Binder原理 的时候发现书中这块代码是在Eclipse环境下编写的,此处换成Android Studio环境同时把要点梳理一下。


一、创建AIDL文件

首先创建单独的包aidl

其下创建:

Book.java ,这个没有什么好说的,书上有源码,概况就是:实现 parcelable接口。定义自己的成员变量,实现writeToParcel(Parcel out ,int flags) describeContens()方法,同时创建 CREATOR;


Book.aidl:

继续在aidl包下右键创建Book.aidl,这时会发现命名重复,创建不了,这时可以随便起一个名字,之后rename。

创建完成之后会发现 aidl文件在Android studio下会被自动移动到单独的一个aidl包下。如图:

Android Studio 创建AIDL以及Binder 原理_第1张图片

Android Studio 创建AIDL以及Binder 原理_第2张图片


IBookManager.aidl 也采用同样的方式创建。


Android Studio 创建AIDL以及Binder 原理_第3张图片


书中eclipse 环境下这里Build之后 会在gen目录下生成对应的IBookManager.java,而Android Studio 则在generated-source下 本质上应该是一样的。

Android Studio 创建AIDL以及Binder 原理_第4张图片


二、Binder原理

1.客户端发起远程请求,同时挂起当前线程(不能在UI线程调用的原因)。

2.继承stub的Binder将参数写入data,调用Transact(注意和服务端的区别)。

3.调用服务端的onTransact()(通过线程池实现,所以要注意同步问题),将结果返回到Binder。

4.返回数据给客户端,同时将客户端唤醒。


你可能感兴趣的:(Android Studio 创建AIDL以及Binder 原理)