首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin 一个好用的新功能:Parcelize!干掉序列化的模板代码

正文共: 1744字 7图

预计阅读时间: 5分钟

在开发中,如果有需要用到序列化和反序列化的操作,就会用到 Serializable 或者 Parcelable,它们各有优缺点,会适用于不同的场景。Serializable 的优点是实现简单,你只需要实现一个 Serializable 接口,并不需要任何额外的代码,但是它的序列化和反序列化,实际上是使用反射做的,所以效率会略低,并且它会在序列化的过程中,会创建很多临时变量,所以更容易触发 GC。Parcelable 需要开发者自己去实现序列化的规则,所以会增加代码量,正是因为规则确定,所以效率会提高很多,并且不容易触发 GC。在 Android 下,通常我会推荐使用 Parcelable ,但是它需要实现太多模板代码了。那么,有没有办法让它和 Serializable 一样,只经过简单的配置就达到我们序列化的需求呢?那就看看 Kotlin 新支持的 Parcelize 了。一、Kotlin 的 ParcelizeParcelize 是 Kotlin 在 1.1.4 中,新增加的功能。如果你需要使用它,先要保证 Android Studio 对 Kotlin 的插件已经升级到 1.1.4 之上的版本,现在的最新版是 1.2.10 ,我这里刚升级了。

在新版的 Kotlin 插件中,已经自动包含了一个自动 Parcelable 实现生成器。简单来说,只需要再主函数中,声明序列化的属性并添加一个 注解,它将自动为我们创建 和 。也就是对开发者而言,只需要加一个 注解,其它的和正常的类没有区别。二、使用 Parcelize2.1 常规使用 Parcelable在 Kotlin 没有支持 的时候,我们使用 Parcelable 的话,写的 Model 类,大概是这样的。

2.2 使用 @Parcelize

而如果使用了 的话,这些模板代码都是会帮我们自动生成,我们只需要增加一个 注解就好了。

有没有感觉到代码量的减少?2.3 实际上生成的代码这两个类,编译完以后,实际上是一致的。我们这边反编译之后,看看 的代码。

注解实际上就是帮我们自动生成了 和 ,其实并没有什么高深的地方,但是这一点可以节约我们的代码量。

三、前期配置使用起来确实非常的方便,但是在此之前,我们还要进行一些简单的配置。3.1 Kotlin 版本前面提到, 是需要 Kotlin 1.1.4 之上的版本才支持,所以你需要保证你的 Kotlin 版本为最新的就好了。升级 Kotlin 如前文所述,直接升级 Kotlin 插件即可。升级完成之后,你可以在 Preferences 中,通过 Kotlin Compiler 查看当前支持的版本,我这里使用的是 1.2 版本。

3.2 Gradle 配置

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

3.3 解决 Lint 错误

直接使用 你将面临一个 Lint 的错误提示。当然 AS 已经为我们做出了解决它的提示。

只需要增加 就可以忽略它就可以了。

今天的 Kotlin 小技巧,对你有没有帮助?有什么想法可以在留言区讨论。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171215B038L800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券