This question already has answers here:
AndroidViewModel vs ViewModel
(3 个回答)
3年前关闭。
我一直在研究 Android 架构组件,这是在 Google IO 2017 中引入的
他们的组件之一是为了避免配置更改问题,他们提供了
根据文档:
AndroidViewModel :可识别应用程序上下文的
ViewModel : ViewModels 也可以作为一个 Activity 的不同 Fragment 之间的通信层。每个 Fragment 可以通过它们的 Activity 使用相同的 key 获取
但是对于
它们在 Android 开发中的实际区别是什么?因为两者都只附加到 Activity/Fragment 生命周期。
(3 个回答)
3年前关闭。
我一直在研究 Android 架构组件,这是在 Google IO 2017 中引入的
他们的组件之一是为了避免配置更改问题,他们提供了
ViewModel
和 AndroidViewModel
类根据文档:
AndroidViewModel :可识别应用程序上下文的
ViewModel
ViewModel : ViewModels 也可以作为一个 Activity 的不同 Fragment 之间的通信层。每个 Fragment 可以通过它们的 Activity 使用相同的 key 获取
ViewModel
但是对于
AndoirdViewModel
场景,我可以通过将类扩展到 Application 类来获取应用程序上下文它们在 Android 开发中的实际区别是什么?因为两者都只附加到 Activity/Fragment 生命周期。
最佳答案
创建自己的Application
的自定义子类不会神奇地使该单例实例可用于ViewModel
。
可以创建 Application
的自定义子类,该子类具有自己的 getInstance()
方法或直接公开单例的方法。 Google不喜欢这种模式(我也不喜欢这种模式),因此Google不会引导开发人员使用它。
ViewModel
本身没有获得 Context
的好方法。 AndroidViewModel
提供一个 Application
用作 Context
,并且专门提供 Application
单例,所以我们确信 Context
本身不代表内存泄漏。
10-07 19:28