Android Architecture Components (AAC)(B)

摘要:浅谈 Android Architecture Components 使用和原理

Lifecycle把生命周期的变化抛出来,是ViewModel和LiveData实现的基础,一般不会直接用,作为参数传入ViewModel和LiveData.

ViewModel的核心价值是独特的生命周期,就一拥有独特生命周期的容器。

LiveData的核心价值是用来通知观察者更新数据。

AAC 实现MVP 。优点:解耦、自动化测试

Android Jetpack 架构组件最佳实践(这文章要细看)

在使用ViewModel时,如果页面仅仅是简单的展示数据没什么交互,可以把业务处理逻辑全部写在ViewModel中,不使用Presenter,但实际情况是大多数页面复杂且交互多,就想着怎样更好的处理ViewModel和View之间的通信,直到看到了这篇文章,参考之后得出了下图实现。

ViewModel和View之间通信模型

Communication between ViewModel and View

  • UserProfileActivity引用UserViewModel,可观察其提供的UserLiveData、StatusLiveData、PageStateLiveData数据源变更分别处理数据显示、页面loading、跳转等UI操作。
  • 注意Activity和ViewModel之间是单向引用。为避免内存泄漏,ViewModel不能持有任何Context引用。
  • UserPresenter持有 UserViewModel的引用,通过ViewModel中的LiveData更新(回调)数据。(可以尝试不把ViewModel传入Presenter(传统的纯业务逻辑处理service),Presenter把处理结果和状态返回给ViewModel,在ViewModel中设置LiveData

该模型如何响应用户事件的?比如点击某个按钮,需要提交信息给server,并在成功响应后刷新UI,这个过程中ViewModel和View是如何通信的?这里简单描述下该过程,首先是Activity将更新事件传递给ViewModel,ViewModel有将其委托给Presenter处理,Presenter将处理状态和结果,通过给图中指定的LiveData设置数据,liveData就能将新数据回调给Activity,这样页面上所有操作就都能通过数据来驱动了。


1、Lifycycle(AAC) 使用详解

2、LiveData 和 ViewModel (AAC)

3、数据库 ORM :Room(AAC)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值