关于底部导航视图,我只是在考虑MVVM。
在这种情况下,这是一个具有多个片段的活动。如果我使用ViewModel,则视图模型将保存所有片段的数据,对吗?这会导致内存泄漏或性能下降吗?
如果我不使用视图模型,那么我一次只能保存一个片段数据。
我想念什么吗?
答案 0 :(得分:0)
有多种实现方法。请记住,ViewModel不必仅由Activity使用,它可以由Fragment甚至是自定义View使用。
在您的情况下,如果您有多个片段,则可以为每个片段创建一个ViewModel(如果它们当然不同)。
唯一会摆脱MVVM模式的是片段和活动之间的通信。
如果您仍然想让ViewModel负责告知活动何时替换/删除/更改片段,则可以在每个模型中定义一个接口(或通用接口),以用作回调,然后可以在onAttach
或您适合的任何位置的ViewModel上设置此回调。
现在,您的片段可以将通知活动的职责传递给ViewModel。我认为这是在活动/片段通信的情况下接近MVVM模式的一种方法,而不会带来太多麻烦。