Kotlin 便捷的实现 Parcelable 序列化

Android中的序列化

在开发中,如果有需要用到序列化和反序列化的操作,就会用到 Serializable 或者 Parcelable,它们各有优缺点,会适用于不同的场景。

Serializable

Serializable 的优点是实现简单,你只需要实现一个 Serializable 接口,并不需要任何额外的代码,但是它的序列化和反序列化,实际上是使用反射做的,所以效率会略低,并且它会在序列化的过程中,会创建很多临时变量,所以更容易触发 GC。

Parcelable

Parcelable 需要开发者自己去实现序列化的规则,所以会增加代码量,正是因为规则确定,所以效率会提高很多,并且不容易触发 GC。

如何在 Kotlin 中便捷的使用 Parcelable

在 Kotlin 中使用 Parcelable 序列化有一个简单的方式,那就是利用 Kotlin 在 1.1.4 版本中新增的一个注解

@Parcelize 

如果你需要使用它,先要保证 Android Studio 对 Kotlin 的插件已经升级到 1.1.4 之上的版本,现在的最新版是 1.2.10 。

在新版的 Kotlin 插件中,已经自动包含了一个自动 Parcelable 实现生成器。简单来说,只需要再主函数中,声明序列化的属性并添加一个 @Parcelize 注解,它将自动为我们创建 writeToParcel() 和 createFromParcel()。也就是对开发者而言,只需要加一个 @Parcelize 注解,其它的和正常的类没有区别。

使用 @Parcelize

@Parcelize 是一个实验室功能,所以还需要在 Gradle 中,增加 experimental 配置。

android{
    ...
    androidExtensions {
        experimental = true
    }
    ...
}

然后在实体类中使用:

@SuppressLint("ParcelCreator")// 用于处理 Lint 的错误提示
@Parcelize
open class BaseBean : Parcelable{}

另外需要注意的是,子类继承 BaseBean 时也是需要添加 @SuppressLint("ParcelCreator")

@SuppressLint("ParcelCreator")
data class UserBean(var name: String = "") : BaseBean() {
}



摘录于 “承香墨影” 公众号
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值