我正在使用新的Android体系结构组件:MVVM,LiveData等。如Android文档以及许多博客所建议,为了在片段之间共享数据,我们应该创建SharedViewModel,每个片段都可以使用具有活动范围的ViewModelProviders。
我只想知道,如果我创建所有带有Activity范围的ViewModel,对内存有影响吗? 它们会在Android内存不足时自动销毁吗?
答案 0 :(得分:0)
不,您应该注意内存问题。
在导航AAC中,Google推荐单一活动应用程序。
但这在某些方面很难。
因此,我使用单独的活动来使用相同的视图模型范围。
如果a,b,c必须使用相同的Viewmodel,只需为其创建一个A Activity,然后将其与d,e片段分开(在B Activity中)。
答案 1 :(得分:0)
当片段彼此通信或应该使用相同的数据时,通常使用共享ViewModel,而不是所有分离的片段。
对所有片段使用单个ViewModel是一种不好的做法,并且会进一步影响内存,降低代码的简洁性,并使ViewModel成为决定所有其他组件的God对象。
每个活动/片段都有自己的ViewModel,并管理自己的数据和ViewModel生命周期是正常的。