gpt4 book ai didi

android - 为什么 viewModel() 在 Activity 或 Fragment 中用于 Composabe 和 viewModels() ?

转载 作者:行者123 更新时间:2023-12-05 00:18:04 25 4
gpt4 key购买 nike

In this link指示使用viewModel()在任何可组合和 Activity 中,我们将在调用 viewModel() 时获得相同的对象.虽然它被指示使用 viewModel()在可组合内,我可以在 setContent{} 中使用它(在任何可组合之外)也。
In this link指示使用viewModels()在 Activity 或 fragment 中获取扩展 ViewModel 的类的对象.
在这两种情况下,我们都得到一个扩展 ViewModel 的类的对象。 .那么,为什么我们需要使用两种不同的方法( viewModel()viewModels() )?

最佳答案

如果你问是否只能使用 viewModel没有 viewModels在 Compose 中,答案是肯定的。但在某些情况下,同时使用它们会更方便。
viewModels 属于 androidx.activity包,是 ComponentActivity 的扩展,与 Compose 无关。它在基于 View 的 Android 中使用,当您需要使用一些特定于 Activity 的回调来初始化或更新 View 模型时,它仍然可以与 Compose 一起使用。
反过来, viewModel 是 Compose 的一部分,允许您从任何 Composable 轻松创建/访问 View 模型。
可以直接在setContent里面调用因为它已经属于可组合范围,但您不会在 Activity 中的其他任何地方调用它,例如在 onActivityResult 中。 (我知道它已被弃用,这只是一个例子)。您仍然可以按照 this answer 中所示进行操作, 但在某些情况下 viewModels可能更容易使用。

关于android - 为什么 viewModel() 在 Activity 或 Fragment 中用于 Composabe 和 viewModels() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69851708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com