我正在阅读google android体系结构示例,并遇到了这个问题。有人可以向我解释此委托的工作原理吗?
private val viewModel by viewModels<TasksViewModel> { getViewModelFactory() }
Run Code Online (Sandbox Code Playgroud)
其中getViewModelFactory是返回ViewModelFactory的扩展方法,而TasksViewModel是ViewModel()的实例
我的阅读方式类似于:
private val viewModel: TasksViewModel by Fragment.ViewModel(ViewModelFactory)
Run Code Online (Sandbox Code Playgroud)
如果我的理解正确,有人可以详细说明吗?
by viewModels(...)是fragment-ktx库的一部分,它是创建lazy委托获取的便捷捷径ViewModels。
// creates lazy delegate for obtaining zero-argument MyViewModel
private val viewModel : MyViewModel by viewModels()
// it's functionally equal to:
private val viewModel by lazy {
ViewModelProviders.of(this).get(MyViewModel::class.java)
}
// with factory:
private val viewModel : MyViewModel by viewModels{ getViewModelFactory() }
// is equal to:
private val viewModel by lazy {
ViewModelProviders.of(this, getViewModelFactory()).get(MyViewModel::class.java)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |