借鉴自开发艺术
Binder是Android中的一个类,实现了IBinder接口
IPC角度,是一种跨进程通信方式
可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,Linux中没有这种通信方式
Framework层,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager等)和相应ManagerService的桥梁
应用层,是客户端和服务端通信的媒介,当bindService的时候,服务端会返回一个包含了服务端业务调用的Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的数据或者服务,这里的服务包括普通服务和基于AIDL的服务。
Android开发中,Binder主要用在Service中,包括AIDL和Messenger,其中普通Service中的Binder不涉及进程间通信,而Messenger的底层其实是AIDL。、
直接新建Aidl文件
rebuild
会发现
gen目录下会生成对应的java文件,就好了
生成的java文件如下
public interface IMyAidlInterface extends android.os.IInterface { /** * Local-side IPC implementation stub class. */ public static abstract class Stub extends android.os.Binder implements com.example.test.IMyAidlInterface { private static final java.lang.String DESCRIPTOR = "com.example.test.IMyAidlInterface"; /** * Construct the stub at attach it to the interface. */ public Stub() { this.attachInterface(this, DESCRIPTOR); } /** * Cast an IBinder object into an com.example.test.IMyAidlInterface interface, * generating a proxy if needed. */ public static com.example.test.IMyAidlInterface asInterface(android.os.IBinder obj) { <