android:浅谈 mvvm 模式中的 ViewModel

Android Jetpack架构篇:带视图的Android Room读后感

不同于 mvp , mvvm 与不使用框架的写法非常的类似,而且理解起来也相对简单很多。

简单的说,就是 界面上需要展示的数据,不是直接写在 View/Fragment/Activity这些界面组件里面,也不是写在Service这些系统组件里面。是放在 ViewModel里面的。

然后,并不是所有的数据操作相关的代码全部放在 ViewModel里面,比如数据库的增删改查,那是放在Dao里面的,但是Dao并不直接被View/Fragment/Activity/Service调用,而是被ViewModel调用。然后界面需要哪些数据,就从ViewModel里面去拿。

然后对于数据层的操作,还可以继续隔离。因为数据的来源不仅仅是数据库,也可能是网络,或者用户输入的。总之这些数据的操作,按照来源先进行区分,分成Dao(对应数据库),Net(对应网络)。然后这些数据操作的接口全部放在Repository里面。对于界面而言,有时候需要的不仅仅是获取数据,显示数据,有时候希望的动态更新。比如接收一个推送,或者数据库的插入更新,这些操作全部由Repository完成。 然后 Repository不是直接给界面调用的,是给ViewModel

如果说大致的数据流向,可以用一张简单的流程图来表示:

DAO
Repository
NET
用户输入
ViewModel-a
Activity-a/Fragemnt-a/View-a
ViewModel-b
Activity-b/Fragment-b
ViewModel-n
Activity-n

这幅图大致表示的是:数据来源可以有多种,比如来自数据库,网络请求等。然后对数据源的全部操作,隔离在Repository , 然后界面可以有多个,每个界面对应一个ViewModel, 所有数据相关的操作,就是放在ViewModel里面,Activity只负责界面的findviewbyid, setText(text)这样的操作。然后这里的text是从ViewModel里面拿到的。不管是主动还是被动,反正都是通过回调拿到数据然后显示出来。


mvvm 跟 Android Jetpack 没有直接的关系。完全可以使用 RXJAVA 来做。
近期我会基于 wanandroid API 来使用 mvvm .

说来惭愧,我还没有使用过 mvvm 呢。 [也没有使用过mvp~]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值