Android中的Parcel机制 实现Bundle传递对象Android中的Parcel机制??? 实现了Bundle传递对象??? 使用Bundle
Android中的Parcel机制 实现Bundle传递对象
Android中的Parcel机制
??? 实现了Bundle传递对象
??? 使用Bundle传递对象,首先要将其序列化,但是,在Android中要使用这种传递对象的方式需要用到Android Parcel机制,即,Android实现的轻量级的高效的对象序列化和反序列化机制。
??? JAVA中的Serialize机制,译成串行化、序列化……,其作用是能将数据对象存入字节流当中,在需要时重新生成对象。主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象等。
???
??? Android中的新的序列化机制
??? ??? 在Android系统中,定位为针对内存受限的设备,因此对性能要求更高,另外系统中采用了新的IPC(进程间通信)机制,必然要求使用性能更出色的对象传输方式。在这样的环境下,
??????? Parcel被设计出来,其定位就是轻量级的高效的对象序列化和反序列化机制。
??? ??? Android中序列化有以下几个特征:
??? ??? 1. 整个读写全是在内存中进行,所以效率比JAVA序列化中使用外部存储器会高很多;
??? ??? 2. 读写时是4字节对齐的
??? ??? 3. 如果预分配的空间不够时,会一次多分配50%;
??? ??? 4. 对于普通数据,使用的是mData内存地址,对于IBinder类型的数据以及FileDescriptor使用的是mObjects内存地址。后者是通过flatten_binder()和unflatten_binder()实现的,目的是反序列化时读出的对象就是原对象而不用重新new一个新对象。
????
