AndroidViewModel 和 Android 架构组件中的 ViewModel 有什么区别?

What is the Difference between AndroidViewModel and ViewModel in Android Architecture Components?

我一直在研究 Android 架构组件,它是在 Google IO 2017

中引入的

他们提供的一个组件以避免配置更改问题 ViewModelAndroidViewModel classes

根据文档:

AndroidViewModel:应用程序上下文感知 ViewModel

ViewModel : ViewModels 也可以用作 Activity.Each 的不同 Fragment 之间的通信层 Fragment 可以通过使用相同的键获取 ViewModel他们的 Activity

但对于 AndoirdViewModel 场景,我可以通过将 class 扩展到应用程序 class

来获取应用程序上下文

它们在Android开发中的实际区别是什么?因为两者都仅附加到 Activity/Fragment 生命周期。

But for AndoirdViewModel scenario I can get application context by extending a class to Application class

创建您自己的 Application 的自定义子类并不能神奇地使该单例实例可用于 ViewModel

可以创建 Application 的自定义子类,它有自己的 getInstance() 方法或直接公开单例的东西。 Google 不喜欢这种模式(就此而言,我也不喜欢),因此 Google 不会引导开发人员使用它。

What is the actual difference between them in Android Development?

A ViewModel 本身没有很好的方法获得 ContextAndroidViewModel 提供一个 Application 用作 Context,并专门提供 Application 单例,因此我们确信 Context 本身不代表内存泄漏.