BinderProxy

Android 跨进程通信基础

妖精的绣舞 提交于 2019-11-28 15:21:47
Android跨进程通信基础——Binder, BinderProxy, parcel, parcelable, Stub, Stub.Proxy (该文章最早于2013年6月7日发表于有道云笔记 进入阅读 ) 百度、google 过很多文章,都没能找到能够从 API 使用者角度简单描述 Binder,BinderProxy,Parcel,Parcelable,Stub,Stub.Proxy 之间关系的文章,要么高深莫测,要么混乱不清。最终决定还是自己动手,看源码,看文档,现总结如下: Binder,BinderProxy 形成了进程间通信的基础,相当于公路桥梁; Parcel 在 IBinder 基础上传输数据,相当于运输工具; Parcelable 基本数据类型和实现了 Parcelable 接口的复合数据类型才可被 Parcel 传输,相当于摆放整齐、安检合格的货物; Stub,Stub.Proxy 实现跨进程调用的接口,相当于收发货方。 注:Binder,BinderProxy 都实现了 IBinder 接口 下面以 Activity 与 Service 通信为例来分析其运行机制。 示例目的:通过跨进程调用方式在 Activity 进程端调用 Service 进程端的方法。这些方法由接口 RemoteSSO 定义。这里假设两者是运行在不同进程的(也可以运行在相同进程