我有一个视图模型,我正在将活动实例传递给它。但是,我并没有强迫视图模型只接受我的活动实例,而是 Android 的活动。
所以基本上,我正在使用:
class CustomViewModel(val activity: Activity): ViewModel
代替:
class CustomViewModel(val activity: MyActivity): ViewModel
以这种方式传递 Activity 是否仍然违反 clean 架构或罚款?
另外,我正在利用这个活动打开另一个片段。所以基本上我的视图模型正在处理这个逻辑。在干净的架构中,这种逻辑是否应该成为 Activity/fragment 本身的一部分?
我有一个视图模型,我正在将活动实例传递给它。
这真是个坏主意。
但是,我并没有强迫视图模型只接受我的活动实例,而是 Android 的活动。
这并没有显着改善这个想法。请记住,随着设备进行配置更改(例如,屏幕旋转、暗模式切换),您的视图模型实例可能会被您的 Activity 类的一个、两个或多个实例使用。
无论您尝试使用这种方法解决什么问题,都可以通过其他方式解决,例如具有 UI 观察到的反应式 API(例如,
StateFlow
)的视图模型。
我正在利用这个活动打开另一个片段
让您的视图模型发出活动观察到的状态(例如,
StateFlow
)。然后,活动可以在状态更改时查看当前片段是否是所需片段,如果需要,执行片段事务以切换当前片段以匹配该状态。
这种逻辑应该是 Activity/fragment 本身的一部分吗?
是的。