03-序列化
7.1.2 序列化
为了方便进程间进行通信,Java提供了序列化和反序列化机制。所谓序列化就是将对象转换为字节序列的过程,而反序列化就是将字节序列恢复为对象的过程。对于Java数据类的序列化,只需要实现Serializable接口即可,具体的实现过程不需要太关注。而对于Android数据类来说,序列化主要有两种方式,一种是实现Serializable接口,另一种是实现Parcelable接口,相比传统的Serializable方式,Parcelable方式性能更好、效率更高。
对于Android开发者来说,通过Android Studio提供的Parcelable插件可以很容易地实现数据类的序列化。现在,对于IntelliJ用户来说,也可以使用插件来辅助数据类的序列化,依次选择【IntelliJ IDEA】→【Preference】→【Plugins】搜索Parcelable Code Generator插件并安装。
Parcelable Code Generator插件的使用过程和Android Studio的Parcelable插件使用过程类似,选中数据类→右键单击【Generate】→【Parcelable(Kotlin)】即可。当然,也可以手动编写,序列化的数据类代码如下。
data class UserData(var name: String, var age: Int, val sex: String) : Parcelable {
constructor(source: Parcel) : this(
source.readString(),
source.readInt(),
source.readString()
)
override fun describeContents() = 0
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
writeString(name)
writeInt(age)
writeString(sex)
}
companion object {
@JvmField
val CREATOR: Parcelable.Creator<UserData> = object : Parcelable.Creator <UserData> {
override fun createFromParcel(source: Parcel): UserData = UserData (source)
override fun newArray(size: Int): Array<UserData?> = arrayOfNulls(size)
}
}
}