![](/img/trans.png)
[英]Initiating a ViewModel with Input parameters in Jetpack Compose -> Composable function
[英]Can Jetpack viewmodel be instantiated in composable function?
Android 文档说可组合函数可以并行运行: https ://developer.android.com/jetpack/compose/mental-model#parallel
这意味着,可以在任何线程上调用任何特定的可组合函数。
那么如果我们实例化viewModel如下:
@Composable
fun FooScreen(viewModel: FooViewModel = viewModel()) {
...
}
这意味着,可以在任何线程(特别是后台线程)上调用viewModel() (androidx.lifecycle.viewmodel.compose.viewModel)。
接下来,如果我们深入研究 viewModel()的作用,就会发现它调用了ViewModelProvider#get 。 而ViewModelProvider#get又标有@MainThread注释。
这是否意味着我们不能在可组合函数中调用viewModel() ?
文档说可以是多线程的。 它们目前不是多线程的——合成总是在主线程上运行。
ViewModels 有一个现有的功能请求,专门用于支持 ViewModels的多线程创建,它说:
这对于 viewModel() 的 Lifecycle ViewModel Compose API 等情况特别有用,这将确保未来多线程组合的兼容性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.