【发布时间】:2019-02-26 09:34:52
【问题描述】:
在 android-architecture-components/GithubBrowserSample 存储库中,Fragment#onViewCreated 生命周期方法用于 ViewModel 实例化(具有 Fragment's 范围),用于使用数据绑定+LiveData+ViewModel的组合:
来自那个 repo 的SearchFragment.kt ^:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
searchViewModel = ViewModelProviders.of(this, viewModelFactory)
...
}
对于这些Fragment 生命周期方法(例如onAttach、onCreate、onViewCreated 或onActivityCreated)中的哪一个是实例化Fragment 的最佳/最安全的地方,是否有任何官方指南或共识?的ViewModel 使用ViewModelProviders.of(fragment, viewModelFactory) 方法? (考虑到数据绑定 + LiveData 组合,如果这有所作为)
试图理解将ViewModel 实例化放入任何早期生命周期方法(例如onAttach/onCreate)的一般优势/劣势(当然是在调用super 之后)。
提前致谢。
【问题讨论】:
-
没有这样的规则。我在矿山上使用
lazy -
IMO 您可以在
onCreate中初始化 Viewmodel。无论如何,你会在onViewCreated上观察。
标签: android android-fragments android-architecture-components android-viewmodel android-livedata