【Android开发】Binder中的Parcel

Binder中的Parcel

Parcel是什么

Parcel是一个智能化数据容器。
Parcel提供了一种能力:将各种类型的数据或对象的引用在A进程中打包,通过Binder实现跨进程传输,然后在B进程中解包出来。
Parcel自动完成打包、解压的过程。

如果是同一个进程中使用Parcel,会先把对象数据拆解,拷贝到Parcel的内存中,然后从parcel的内存中根据各个字段,再恢复创建另一个对象,再释放Parcel内存。因此,同一进程使用parcel,会造成内存浪费,效率较低。

如果是不同进程间使用Parcel,进程A会先把对象数据拆解,拷贝到Parcel的内存中,然后再把Parcel内存中的数据拷贝到内核空间,释放Parcel内存。 进程B基于mmap,从内核空间直接读取数据,得到进程B中的Parcel对象,从Parcel对象中根据各个字段再恢复创建一个Student对象,此时Student对象就在B进程了。

猜你喜欢

转载自blog.csdn.net/qq_39441603/article/details/125963052