AndroidViewModel 和 Android 架构组件中的 ViewModel 有什么区别?
What is the Difference between AndroidViewModel and ViewModel in Android Architecture Components?
我一直在研究 Android 架构组件,它是在 Google IO 2017
中引入的
他们提供的一个组件以避免配置更改问题 ViewModel
和 AndroidViewModel
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
本身没有很好的方法获得 Context
。 AndroidViewModel
提供一个 Application
用作 Context
,并专门提供 Application
单例,因此我们确信 Context
本身不代表内存泄漏.
我一直在研究 Android 架构组件,它是在 Google IO 2017
中引入的他们提供的一个组件以避免配置更改问题 ViewModel
和 AndroidViewModel
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
本身没有很好的方法获得 Context
。 AndroidViewModel
提供一个 Application
用作 Context
,并专门提供 Application
单例,因此我们确信 Context
本身不代表内存泄漏.