ViewModel、LiveData 使用

本文详细介绍了Android中ViewModel和LiveData的使用,包括它们的引入、优点及注意事项。ViewModel能保持UI数据在配置变更后不变,不持有Context以避免内存泄漏。LiveData具有生命周期感知,能在组件活跃时更新UI,避免内存泄漏。文章还提到了DataBinding的配合使用,以及MutableLiveData的setValue()和postValue()方法的区别。
摘要由CSDN通过智能技术生成

ViewModel、LiveData 使用

官方中文教学地址

在看以下内容之前,如果对DataBinding不够熟悉,建议先对DataBinding进行了解。

CSDN:Android DataBinding 使用说明

简书:Android DataBinding 使用说明

Android DataBinding 使用测试代码

简书:ViewModel+LiveData+DataBinding使用

CSDN:ViewModel+LiveData+DataBinding使用

ViewModel 简介

ViewModel类是用来保存UI数据的类,它会在配置变更(即 Configuration Change,例如手机屏幕的旋转)之后继续存在;我们都知道,当手机屏幕发生旋转的时候,Activity会被重新创建,也就是说生命周期又将从onCreate开始,如果你此时不及时保存,那么一些UI数据将会丢失,这样肯定是会出问题的。但是,ViewModel并不会受此影响,即便手机屏幕发生旋转,ViewModel依然存在,这样的话Activity的UI数据便可以保存下来。

ViewModel 使用说明、注意

  1. 所有Activity的UI相关数据应该保存在ViewModel中,而不是保存在Activity中。这样做的好处是,在配置变更的时候,你应用的UI数据仍然存在。即使ViewModel这么强大,但它也不应该不承担过多责任,当有UI数据处理等相关事件建议创建Presenter类,或者创建一个更成熟的架构。
  2. Activity负责展示UI数据,并接收互动(一般来说是与用户的互动)。但是Activity不应当处理这些互动。
  3. 在应用需要加载数据或者保存数据的时候,建议创建一个Repository的存储区类,里面放置存储与加载应用数据的API。
  4. ViewModel不应持有Context,就像之前说的:

    它会在配置变更(即 Configuration Change,例如手机屏幕的旋转)之后继续存在。

所以,ViewModel生命周期远比Activity,Fragment等生命周期更长,具体如下图所示。如果你这样做了,加入在屏幕旋转情况下,原Activity将会销毁,新的Activity将会被创建。而ViewModel会一直持有原Activity,这样便会造成内存泄漏。如果你的ViewModel确实需要Context,那么你的ViewModel可以继承AndroidViewModel,这样你的ViewModel中会有Application的引用。
5. ViewModel不应当取代onSaveInstanceState方法。尽管ViewModel很出色了,但是它和onSaveInstanceState依然是相辅相成的作用。因为,当进程被关闭时,ViewModel将会被销毁,但是onSaveInstanceState不会受到影响。

ViewModel 使用

ViewModel 引入

  1. android.support 形式

     implem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值