【发布时间】:2018-05-29 10:52:39
【问题描述】:
在ViewModel 类中命名方法的最佳方式是什么?基于其动作/行为或 Activity/Fragment 的生命周期?
例如:
以其动作命名的方法
override fun onResume() {
super.onResume()
viewModel.connect()
}
override fun onPause() {
super.onPause()
viewModel.disconnect()
}
override fun onItemCheckedChanged(task: Task, value: Boolean) =
viewModel.updateTaskStatus(task, value)
Android 生命周期命名的方法
override fun onResume() {
super.onResume()
viewModel.onResume()
}
override fun onPause() {
super.onPause()
viewModel.onPause()
}
override fun onItemCheckedChanged(task: Task, value: Boolean) =
viewModel.onItemCheckedChanged(task, value)
网上有几个例子,两种方法都用到了。
在我看来,方法应该和生命周期相关,这样View不需要知道ViewModel背后的逻辑,只需要知道需要调用一个生命周期方法即可。
最好的方法是什么?
【问题讨论】:
-
依赖 onPause/onResume 意味着在多窗口模式下,当另一个应用有焦点时,你的应用“停止接收东西”:最好只使用 Jetpack 提供的 LiveData
-
@EpicPandaForce,是的,我在实际项目中使用 LiveData 并使用 Lifecycle 来控制状态。这只是一个示例名称约定的 sn-p。 :)
-
在这种情况下,您实际上不需要连接或断开连接,因为您公开了 LiveData
并在它们上调用 observe。
标签: android mvvm kotlin viewmodel convention