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传递。
Serializable 和Parcelable的对比
android上应该尽量采用Parcelable,效率至上
编码上:
Serializable代码量少,写起来方便。
Parcelable代码多一些,更适合在Android平台上。
效率上:
Parcelable的速度比高十倍以上
Serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可。Serializable 接口是一种标识接口(marker interface),这意味着无需实现方法,Java便会对这个对象进行高效的序列化操作。
这种方法的缺点是使用了反射,进行了大量的I/O操作,序列化的过程较慢。这种机制会在序列化的时候创建许多的临时对象,容易触发垃圾回收。
Parcelable方式的实现原理是将一个完整的对象进行分解,而分解后的每一部分都是Intent所支持的数据类型,这样也就实现传递对象的功能了。