MVVM - 片段作为 ViewModel 方法的参数
MVVM - fragment as a parameter to ViewModel's method
我正在 MVVM 架构中构建自己的应用程序,我了解到 ViewModel 不应该引用视图或上下文,但是 ViewModel 中方法的参数是 Fragment 怎么样?我在一些 MVVM 项目(尤其是使用 Firebase Google SignIn)中多次看到它,我想知道这是正确的方法吗?
这不是个好主意,因为:
- 违背MVVM原则,
ViewModel
不应该知道View
.
- 在 android 中,如果您使用 Arch ViewModel,您还有另一个缺点 -> 在某些情况下,
ViewModels
会比视图寿命更长,例如方向改变。因此,引用视图 (Fragment
/Activity
) 可能会导致内存泄漏,因为 GC 无法释放该视图。
我正在 MVVM 架构中构建自己的应用程序,我了解到 ViewModel 不应该引用视图或上下文,但是 ViewModel 中方法的参数是 Fragment 怎么样?我在一些 MVVM 项目(尤其是使用 Firebase Google SignIn)中多次看到它,我想知道这是正确的方法吗?
这不是个好主意,因为:
- 违背MVVM原则,
ViewModel
不应该知道View
. - 在 android 中,如果您使用 Arch ViewModel,您还有另一个缺点 -> 在某些情况下,
ViewModels
会比视图寿命更长,例如方向改变。因此,引用视图 (Fragment
/Activity
) 可能会导致内存泄漏,因为 GC 无法释放该视图。