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 也会通过绑定反映更改。
我正在使用 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 也会通过绑定反映更改。