当前位置:嗨网首页>书籍在线阅读

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)
        }
    }
}