【发布时间】:2020-01-28 05:36:16
【问题描述】:
我需要在 dagger2 使用 ViewModelProvider.Factory 注入的 ViewModel 中执行初始查询,我可以在片段中执行此操作,但在这种情况下,当旋转屏幕时,将重新创建活动并且初始查询将再次执行,我不希望这种行为,我想看到我在旋转之前查看的相同数据。
可能的解决方案
我可以在 ViewModel 中定义一个布尔变量并编写这个逻辑:
_ViewModel
var isScreenRotated = true
_片段
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
if (searchViewModel.isScreenRotated) {
searchViewModel.isScreenRotated = false
searchViewModel.executeSearch("fruits", 1)
}
}
提前致谢。
【问题讨论】:
-
到目前为止您尝试过什么?请在此处发布代码,以便我们更好地了解您的需求。
-
查看编辑后的帖子,我实际上是在问我是否能够在注入的 ViewModel 的构造函数中执行代码,因为我想在应用程序启动后立即执行初始查询,但我没有'不希望它受到配置更改的影响,所以我不想在旋转屏幕时再次执行初始查询。
-
您不需要在viewmodel的init中执行它,只需添加一个方法并从活动或片段中调用。如果您在应用程序级别需要它,那就另当别论了。
-
@DevMike01,我正在考虑它我绝对不能在 ViewModel 的构造函数中执行初始查询,因为我必须在查询中使用 ViewModel 本身,所以唯一的方法是我在问题中写的一个。
-
@cutiko 但在这种情况下,该方法将在旋转屏幕后再次调用并执行,因为将重新创建活动。
标签: android mvvm constructor viewmodel dagger-2