Android ViewModel 到模型事件

Android ViewModel to Model events

我正在使用 Google 的架构组件(ViewModel、LiveData)和 MVVM 架构构建一个新的 Android 应用程序。

我很确定我已经掌握了大部分流程。我了解 View 如何使用 LiveData 来观察 ViewModel 的变化,以及 ViewModel 如何类似地观察模型(在我的例子中是一个单例存储库)的变化。

因为我试图将我的大部分业务逻辑保留在模型层中,所以我希望视图 'report' 事件一直到模型层,我的业务逻辑可以在其中决定 whether/how 来处理事件。目前,我的业务逻辑可以更新存储库中的值,这会将值更改向下传播到视图,但这只是单向的。

如何通知 View 事件的模型?

视图不能直接向模型报告。这违背了干净的架构和 MVVM。

ViewModel 充当视图和模型之间的联络人。 ViewModel 可能从视图中获取输入并将其放置在模型上,或者它可能与服务交互以检索模型,然后转换属性,视图将通过绑定或观察者收到更改数据的通知。

如果您使用 kotlin(和 gradle 2.0 或更高版本),现在您可以 use listener bindings 进行事件处理,这让您可以在通过 lambda 表达式触发事件时直接从 ViewModel 执行方法。那么 ViewModel 应该是在模型上执行工作的人。当模型更新时,ViewModel 会收到观察者的通知,并且 View 也会通过绑定反映更改。