我是靠谱客的博主 专注超短裙,最近开发中收集的这篇文章主要介绍初识Kotlin 之8__探究Jetpack__LiveData的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

LiveData是Jetpack提供的一种响应式编程组件,它可以包含任何类型的数据,并在数据发生变化的时候通知给观察者。

 

LiveData通常与ViewModel结合在一起使用,  我们可以回到   初识Kotlin 之2__探究Jetpack  再回顾思维导图。

一 LiveData的基本用法

在之前,我们一直在Activity中手动获取ViewModel 中的数据, 但是ViewModel却无法将数据的变化主动通知给Activity. 

那么能否这样思考?  把Activity 的实例传给ViewModel,  这样ViewModel不就能主动对Activity通知了吗?   

不能这样做!

因为ViewModel的生命周期是长于Activity 的,  如果把Activity 的实例传给ViewModel,  可能会因为Activity 无法释放而造成内存泄漏。  

要解决这个问题,就是使用LiveData,  即: 将变化的数据用LiveData来包装, 然后在Activity 中去观察它, 就可以主动将数据变化通知给Activity了。

在上篇博文基础上, 修改MainViewModel中的代码,如下所示:

这里我们将 counter 变量修改成一个MutableLiveData 对象, 并指定它的泛型为Int,  表示它包含的是整型数据。 MutableLiveData是一种可变的LiveData, 它的用法很简单, 主要有3种读写数据的方法, 分别是getValue()、 setValue()、postValue()方法

  • getValue() 方法用于获取LiveData中包含的数据;
  • setValue() 方法用于给LiveData设置数据, 但是只能在主线程中调用; 
  • postValue()用于在非主线程中给LiveData设置数据。

可以看到, 这里在init {} 给counter设置数据, 这样之前保存的计数值就可以在初始化的时候得到恢复。

plusOne() 方法中的逻辑是先获得counter中包含的数据, 然后给它加1, 再重新设置到counter中,注意调用LiveData的getValue() 方法所获得的数据可能为空,

因此这里使用了一个?:操作符, 当获取到的数据为空时, 就用0来作为默认计数。 

最后

以上就是专注超短裙为你收集整理的初识Kotlin 之8__探究Jetpack__LiveData的使用的全部内容,希望文章能够帮你解决初识Kotlin 之8__探究Jetpack__LiveData的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部