如果我创建具有 Activity 范围的所有视图模型,它对内存有何影响?
How it impact on memory if I create all View Models with Activity scope?
我正在使用新的 Android 架构组件:MVVM、LiveData 等。根据 Android 文档以及许多博客的建议,为了在片段之间共享数据,我们应该使用具有 Activity 范围的 ViewModelProviders 创建每个片段将访问的 SharedViewModel。
我只想知道,如果我使用 Activity 范围创建所有 ViewModel,是否会对内存产生任何影响?
它们会在 Android 低内存时自动销毁吗?
不,你应该知道内存问题。
在导航 AAC 中,Google 推荐单个 activity 应用程序。
但这在某些方面很难。
所以我使用分隔 activity 来使用相同的视图模型范围。
如果a、b、c必须使用相同的Viewmodel,只需为它们制作一个AActivity并用d、e片段分开(在BActivity中)。
当您的片段相互通信或应该使用相同的数据时,使用共享 ViewModel 很常见,但不适用于所有分离的片段。
对所有片段使用单个 ViewModel 是一种不好的做法,会进一步影响内存,降低代码的简洁性,并使您的 ViewModel 成为决定所有其他组件的上帝对象。
每个 activity/fragment 都有自己的 ViewModel,并管理自己的数据和 ViewModel 生命周期,这很正常。
我正在使用新的 Android 架构组件:MVVM、LiveData 等。根据 Android 文档以及许多博客的建议,为了在片段之间共享数据,我们应该使用具有 Activity 范围的 ViewModelProviders 创建每个片段将访问的 SharedViewModel。
我只想知道,如果我使用 Activity 范围创建所有 ViewModel,是否会对内存产生任何影响? 它们会在 Android 低内存时自动销毁吗?
不,你应该知道内存问题。
在导航 AAC 中,Google 推荐单个 activity 应用程序。
但这在某些方面很难。
所以我使用分隔 activity 来使用相同的视图模型范围。
如果a、b、c必须使用相同的Viewmodel,只需为它们制作一个AActivity并用d、e片段分开(在BActivity中)。
当您的片段相互通信或应该使用相同的数据时,使用共享 ViewModel 很常见,但不适用于所有分离的片段。
对所有片段使用单个 ViewModel 是一种不好的做法,会进一步影响内存,降低代码的简洁性,并使您的 ViewModel 成为决定所有其他组件的上帝对象。
每个 activity/fragment 都有自己的 ViewModel,并管理自己的数据和 ViewModel 生命周期,这很正常。