如果我创建具有活动范围的所有视图模型,它将对内存有何影响?

时间:2019-02-21 08:51:11

标签: android android-architecture-components android-livedata

我正在使用新的Android体系结构组件:MVVM,LiveData等。如Android文档以及许多博客所建议,为了在片段之间共享数据,我们应该创建SharedViewModel,每个片段都可以使用具有活动范围的ViewModelProviders。

我只想知道,如果我创建所有带有Activity范围的ViewModel,对内存有影响吗? 它们会在Android内存不足时自动销毁吗?

2 个答案:

答案 0 :(得分:0)

不,您应该注意内存问题。

在导航AAC中,Google推荐单一活动应用程序。

但这在某些方面很难。

因此,我使用单独的活动来使用相同的视图模型范围。

如果a,b,c必须使用相同的Viewmodel,只需为其创建一个A Activity,然后将其与d,e片段分开(在B Activity中)。

Activity and Viewmodel lifecycle

答案 1 :(得分:0)

当片段彼此通信或应该使用相同的数据时,通常使用共享ViewModel,而不是所有分离的片段。

对所有片段使用单个ViewModel是一种不好的做法,并且会进一步影响内存,降低代码的简洁性,并使ViewModel成为决定所有其他组件的God对象。

每个活动/片段都有自己的ViewModel,并管理自己的数据和ViewModel生命周期是正常的。