一分钟带你入门MVVM和ViewModel

目录

0.为啥用ViewModel进行数据的存取

1.MVVM的具体含义

2.viewModel内部构造

3.配置viewModel

3.1 声明一个ViewModel实例类

3.2  viewModel功能实现


0.为啥用ViewModel进行数据的存取

通过持有LiveData维护保存数据的状态

为啥维护 ? : 当Activity旋转,跳转时,进行控件销毁,数据丢失

                        MutableLiveData可以将数据保存在一个特殊内存空间

保存多久?  : 在Fragment,Activity中初始化ViewModel,将他们本身的lifecycle传给                              viewModel,viewModel的生命周期跟他们同步

ViewModel的优势:  生命周期和数据持久化,它就适用于Activity和Fragment,

                                       其次就是异步回调,不会造成内存泄漏,

                                        再次就是对View层和Model层进行隔离,是两者不存在耦合性。

1.MVVM的具体含义

M  :  model  自定义类

V   :  view    UI界面以及其控件

VM :  viewModel  多界面 统一存取数据,可利用databind进行view和model的数据的双向更新

2.viewModel内部构造

继承viewModel或者AndroidVIewModel(Application)

内部定义——“共享数据” , 即多个界面共用一套数据,只要是共享数据,定义在viewModel

MutableLiveData(默认初始值)

实现共享数据的set和get方法

set 方法 ——》定义的共享变量. postVaule()

get 方法 ——》定义的共享变量. value()

3.配置viewModel

3.1 声明一个ViewModel实例类

三种声明viewModel方式

第一,如自定义控件 不存在lifecycle ,viewModel靠外部传入

第二、简单方法  利用声明后缀 by viewModels()

        通常在Fragment和Activity这种自带lifecycle

第三、标准方法  利用ViewModelProvider

3.2  viewModel功能实现

第一:如自定义控件,Adapter(需要传入viewModel),将本身viewModel传入其中

第二:提供各界面 修改共享数据(viewModel内的set方法)

第三:数据观察,实时更新UI界面的数据

        实际为  找到共享数据.observe(传入自身lifecycleOwner) { // 监视到该项共享数据改变后,立刻执行的操作}

  • 28
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值