Android 如何将viewModel范围限定为与NavHost无关的对话框可组合函数
我使用的是Android compose和view模型,我有一个ViewModel,它的作用域是一个单一的可组合函数,它是一个底部工作表视图,这是使用膨胀的,我使用将ViewModel注入可组合函数中,但我有一个问题,Android 如何将viewModel范围限定为与NavHost无关的对话框可组合函数,android,android-jetpack-compose,Android,Android Jetpack Compose,我使用的是Android compose和view模型,我有一个ViewModel,它的作用域是一个单一的可组合函数,它是一个底部工作表视图,这是使用膨胀的,我使用将ViewModel注入可组合函数中,但我有一个问题,ViewModel函数在我再次打开底部工作表时返回之前创建的同一个ViewModel实例 换句话说,如何将ViewModel范围限定为与NavHost和Backback无关的对话框可组合函数 @Composable fun ComposableExample( ) {
ViewModel
函数在我再次打开底部工作表时返回之前创建的同一个ViewModel实例
换句话说,如何将ViewModel范围限定为与NavHost和Backback无关的对话框可组合函数
@Composable
fun ComposableExample(
) {
val viewModel: ExampleViewModel= viewModel() // createdOnlyOnce and always returns old instance
}
根据,Compose不提供任何机制将ViewModels范围限定到单个@Composable
-您在NavHost
目的地之外创建的任何ViewModels范围限定到包含您的ComposeView
/的活动/片段,您在其中调用setContent
,因此,在您的Compose层次结构的整个生命周期中都存在—这就是为什么您总是返回相同的实例
请注意,Navigation Compose具有针对和的现有功能请求,这将为这些类型的目的地带来相同的ViewModels范围和状态。你应该在这些问题上加星号,以获得更新并表明你的兴趣(这有助于确定工作的优先级)