Kotlin 插件的落幕,ViewBinding 的崛起

前言最近小伙们应该都会收到 Kotlin 1.4.20 的升级通知,在 Kotlin 1.4.20 中做了一个重要的更新 如下图所示:简单总结一下,主要有以下几点:废弃了 kotlin-android-extensions 编译插件 Parcelable 相关的功能,移到了新的插件 kotlin-parcelize按照 Google 的解释,kotlin-android-extensions 插件只会保留至少一年的时间,将会在 2021 年 9 月或之后的 Kotlin 版本...
摘要由CSDN通过智能技术生成

Kotlin 插件的落幕,ViewBinding 的崛起

 

前言

最近小伙们应该都会收到 Kotlin 1.4.20 的升级通知,在 Kotlin 1.4.20 中做了一个重要的更新 如下图所示:

Kotlin 插件的落幕,ViewBinding 的崛起

简单总结一下,主要有以下几点:

  • 废弃了 kotlin-android-extensions 编译插件
  • Parcelable 相关的功能,移到了新的插件 kotlin-parcelize

按照 Google 的解释,kotlin-android-extensions 插件只会保留至少一年的时间,将会在 2021 年 9 月或之后的 Kotlin 版本中将被移除

kotlin-android-extensions 主要有以下两个功能:

  • 使用 Kotlin 合成方法(Synthetic 视图)取代 findViewById,通过引入 kotlinx.android.synthetic 可以直接使用控件的 ID,我猜当初也是因为这个特性,吸引了很多开发者开始学习和尝试使用 Kotlin
  • 手动实现 Parcelize 比较麻烦,所以 Kotlin 提供了 @Parcelize 注解帮助快速实现 Parcelize

其实这并不是什么新的新闻了,早在 2019 年的时候,Google 就提出了不建议在项目中使用 kotlinx.android.synthetic,详见这个 commit,部分内容如下图所示:

Kotlin 插件的落幕,ViewBinding 的崛起

通过引入 kotlinx.android.synthetic 可以直接使用控件的 ID,这么方便为什么不建议使用?主要有以下问题:

  • 通过 Kotlin 合成方法(Synthetic 视图)取代 findViewById,这是通过全局空间缓存 ID,与 Layout 无关,没有针对 ID 进行无效检查
  • 在不同的 Layout 文件中,使用了相同的 ID,或者删除了 ID ,它并不会提示空异常,导致增加了 App 的崩溃次数
  • 仅仅支持 Kotlin
  • 默认是通过 HashMap 缓存 ID 浪费空间,虽然可以通过在模块级 build.gradle 文件内添加 defaultCacheImplementation = "SPARSE_ARRAY" 来修改默认的实现方式为 SparseArray
  • ......

因此 ViewBinding 出现了,ViewBinding 解决了上述所有问题,ViewBinding 虽然好,但是也有它的不足之处。

  • ViewBinding 相比于 kotlinx.android.synthetic 使用方式比较复杂
  • 在 A
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值