ViewModel与LiveData和ViewModel没有LiveData有什么不同?

问题描述 投票:1回答:2

我阅读了许多关于viewmodel和livedata的教程,但我没有在mvvm模式中的viewmodel类中实际使用livingata。提前致谢。

android mvvm viewmodel android-livedata
2个回答
0
投票

MVVM模式只是向下说V - > VM - > M并反应M - > VM - > V.意味着View可以调用ViewModel上的方法,但是ViewModel没有对View调用方法的引用在它上面(设置数据)。从ViewModel到View的通信方式是通过View观察一些变量(ObservableField,LiveData,RxJava等)。

LiveData是一个很好的可观察对象,用于提供viewModel和View之间的通信,尤其是在诸如旋转之类的状态更改之间。它还提供了模型和视图之间关于数据库更改和Room的良好通信。


0
投票

根据Google文档,如果您已经在使用像Rx或Agera这样的库,则可以继续使用它们而不是LiveData。但在这种情况下,您有责任处理每个Android组件生命周期的对象分配和解除分配。

使用MVVM模式时,由于viewmodel没有对视图的引用,因此您需要可观察的数据持有者来观察更改,以便您可以正确地更新视图。

在这种情况下,您可以使用livingata,一个体系结构组件或任何其他可观察的,如Rx。

主要的区别是livingata尊重android生命周期,而rx observables则没有。

使用livedata,当onChange被调用时,由于停止活动而没有崩溃,因为它可以识别生命周期。但是没有liveata,你可以自己处理这个案子。

© www.soinside.com 2019 - 2024. All rights reserved.