IPC机制--开发艺术探索(二)
Parcelable使用较为复杂,下面是一个典型用法:
首先说下Parcel,Parcel 内部包装了可序列化的数据,可以再Binder中自由传输。
序列化过程需要实现的功能有:
1.序列化 -->writeToParcel
2.反序列化 -->CREATOR
3.内容描述 -->describeContents (基本所有情况返回0,只有当前对象存在文件描述符是,返回1)
注意:User(Parcel in)方法中,由于book是另一个可序列化对象,所以它反序列化过程需要传递当前线程的上下文加载器,否则报错
序列化方式选取:
Binder
Binder是Android中一个类,实现了IBinder接口,是Android一种跨进程通信方式,也可理解为一种虚拟物理设备,设备驱动为/dec/binder;从Android Framework角度上,Binder是ServiceManager连接各种Manager(Activity、Window等)和ManagerService的桥梁;从Android应用层来说,Binder是客户端与服务端进行通信的媒介,当bindService时,服务端返回一个包含了服务端业务调用的Binder对象,通过这个Binder对象,客户端可以获取服务器端提供的服务或数据,这里的服务包括普通服务以及基于AIDL的服务。