原文作者:DHL
原文链接:掘金
本篇文章作为技术动态了解即可,废弃 LiveData.observe()
扩展方法,已经不是什么新的新闻了,在很久以前,Google 废弃掉这个方法的时候,第一时间我在 朋友圈 和 掘金沸点 发过一个消息,如下图所示。
通过这篇文章你将学习到以下内容:
- 为什么增加
LiveData.observe()
扩展方法? - 既然增加了,为什么有要废弃
LiveData.observe()
扩展方法? - Kotlin 1.4 语法的特性
- 什么是函数式(SAM)接口?
- 什么是 SAM 转换?
为什么废弃 LiveData.observe 扩展方法
我们先来看看官方是如何解释,如下图所示:
在 Kotlin 1.4 上本身能够将默认的 observe()
方法转换为 lambda 语法,以前只有在使用 Kotlin 扩展时才可用。因此将 LiveData.observe()
扩展方法废弃掉了。
在 Kotlin 1.4 之前 LiveData.observe()
写法如下所示。
liveData.observe(this, Observer<String> {
// ......
})
复制代码
但是这种写法有点复杂,因此 Google 在 lifecycle-livedata-ktx
库中添加了扩展方法,使代码更简洁,可读性更强。
liveData.observe(this){
// ......
}
复制代码
在 Kotlin 1.4 时,增加了一个新的特性 SAM conversions for Kotlin interfaces ,支持将 SAM(单一抽象方法)接口,转换成 lambda 表达式,因此废弃了 LiveData.observe()
扩展方法。所以升级 lifecycle-livedata-ktx
库到最新版本,将会出现如下提示。