同一活动中不同可组合功能的不同视图模型

And*_*per 9 android android-fragments android-jetpack android-jetpack-compose

我在堆栈溢出的某个地方读到过-

如果您正在创建新应用程序,则可以完全跳过使用 Fragments,而仅使用可组合函数来表示您的屏幕。

但是,在使用片段时,我们可以为不同的片段/屏幕使用不同的视图模型。我们可以通过可组合函数实现相同的目标吗?例如单个活动、不同屏幕的不同可组合函数以及不同可组合函数的不同视图模型?如果是,这是理想的方法?

Ric*_*per 0

你可以做到吗?是的。你应该这样做吗?取决于您的用例,但根本不是问题。

您可以选择这样做,但在这种情况下,最好的选择是保持代码干净(可读且可维护)。因此,如果您要为整个屏幕创建可组合项,我认为为每个屏幕使用多个视图模型是可行的,因为否则大量数据将被填充到单个视图模型中。但是,您应该注意视图模型的维护。如果您在可组合项中初始化虚拟机,则它有可能被销毁(特别是如果您使用导航)。您必须在活动本身中将其声明为顶级。单个活动中的多个视图模型在视图世界中可能并不常见,但这样做没有问题。因此,我的建议是选择适合您的特定用例的方法。如果您唯一想问的是是否可以完成以及这样做是否有任何问题,那么您的答案是 - 是和否(分别)。