最近在画各种图,所以这里贴贴图来说明一下
前言
安卓中的Binder是一牵扯比较多的东西,由于内容较多先把bindServer 等 一些流程单独提到下一次补充。其次,虽然自己所掌握的东西感觉还是相对浅显、C++层也不曾涉及。但是这个知识点是一个必须经历的过程。先尽量把自己能想到的点写一下。以便后续补充。
Binder是什么
Binder优势
Binder的通信机制
AIDL文件编译成java文件组成
AIDL编译出来的方法的执行过程(暂时忽略bindService流程)
- 关于bindService的作用:客户端调用bindService传入ServiceConnection回调接口参数来回调服务连接状态。通过AMS和远程服务通信获取远程服务的IBinder对象,返回给客户端,客户端就可以拿到服务的引用来调用相关方法。
- 这时客户端拿到上面bindService获取服务端的引用:通过这个引用流程如下:
编写AIDL文件一些注意事项
举例
- 新建com.a.bean.Person类,并实现Parcelable的 ,java文件Person.java
// Person.java
package com.a.bean;
public class Person implements Parcelable {...}
- 编写aidl接⼝文件,Person.aidl
// Person.aidl
package com.a.bean;
parcelable Person;
- 编写使用Person bean的aidl文件,PersonAidl.aidl
import com.a.bean.Person;
interface PersonAidl {
void addPerson(in Person person);
List<Person> getPersonList();
}