是否可以按照干净的架构将活动实例传递给视图模型

问题描述 投票:0回答:1

我有一个视图模型,我正在将活动实例传递给它。但是,我并没有强迫视图模型只接受我的活动实例,而是 Android 的活动。

所以基本上,我正在使用:

class CustomViewModel(val activity: Activity): ViewModel

代替:

class CustomViewModel(val activity: MyActivity): ViewModel

以这种方式传递 Activity 是否仍然违反 clean 架构或罚款?

另外,我正在利用这个活动打开另一个片段。所以基本上我的视图模型正在处理这个逻辑。在干净的架构中,这种逻辑是否应该成为 Activity/fragment 本身的一部分?

android android-viewmodel clean-architecture android-mvvm
1个回答
0
投票

我有一个视图模型,我正在将活动实例传递给它。

这真是个坏主意。

但是,我并没有强迫视图模型只接受我的活动实例,而是 Android 的活动。

这并没有显着改善这个想法。请记住,随着设备进行配置更改(例如,屏幕旋转、暗模式切换),您的视图模型实例可能会被您的 Activity 类的一个、两个或多个实例使用。

无论您尝试使用这种方法解决什么问题,都可以通过其他方式解决,例如具有 UI 观察到的反应式 API(例如,

StateFlow
)的视图模型。

我正在利用这个活动打开另一个片段

让您的视图模型发出活动观察到的状态(例如,

StateFlow
)。然后,活动可以在状态更改时查看当前片段是否是所需片段,如果需要,执行片段事务以切换当前片段以匹配该状态。

这种逻辑应该是 Activity/fragment 本身的一部分吗?

是的。

© www.soinside.com 2019 - 2024. All rights reserved.