Android学习笔记——IPC机制

IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信。

IPC基础概念介绍

主要包含三个方面内容:Serializable接口、Parcelable接口以及Binder

Serializable接口

Serializable是Java所提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作,序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的格式的过程。 反序列化 (Deserialization)是通过从存储或者网络读取对象的状态,重新创建该对象。序列化广泛应用在远程调用(RPC或者数据存取

· 如何把一个对象序列化到磁盘上,并从磁盘上将该对象恢复,使用的是ObjectOutputStream和ObjectInputStream。

· 使用transient关键字、readObject和writeOjbect方法、writeReplace和readresolve方法干预序列化。

 

2.Parcelable接口

实现这个接口,一个类的对象就可以实现序列化并可以通过Intent和Binder传递。

Android学习笔记——IPC机制

           

Serializable Parcelable的对比

android上应该尽量采用Parcelable,效率至上

编码上:

Serializable代码量少,写起来方便。

Parcelable代码多一些,更适合在Android平台上。

效率上:

Parcelable的速度比高十倍以上

Serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可。Serializable 接口是一种标识接口(marker interface),这意味着无需实现方法,Java便会对这个对象进行高效的序列化操作。

这种方法的缺点是使用了反射,进行了大量的I/O操作,序列化的过程较慢。这种机制会在序列化的时候创建许多的临时对象,容易触发垃圾回收。

Parcelable方式的实现原理是将一个完整的对象进行分解,而分解后的每一部分都是Intent所支持的数据类型,这样也就实现传递对象的功能了。