【问题标题】:What is the difference between ViewModel and AndroidViewModel [duplicate]ViewModel和AndroidViewModel有什么区别[重复]
【发布时间】:2017-12-15 01:23:21
【问题描述】:

对于任何有这个问题的人,

根据 Android 文档,

由于 ViewModel 比特定的活动和片段实例化的寿命更长,它不应该引用视图或任何可能持有对活动上下文的引用的类。如果 ViewModel 需要 Application 上下文(例如,寻找系统服务),它可以扩展 AndroidViewModel 类,并在构造函数中有一个接收 Application 的构造函数(因为 Application 类扩展了 Context)。

文档可以在这里找到: https://developer.android.com/topic/libraries/architecture/viewmodel.html

编辑: 重复解释: 我的意思是您可以将类扩展到 ViewModel 以及 AndroidViewModel。当您应该扩展哪个时,上述解释仅用于此。上面的链接讲述的是 MVVM 架构的 ViewModel,而不是 android.arch.lifecycle.ViewModel

【问题讨论】:

  • 我的意思是你可以将类扩展到 ViewModel 以及 AndroidViewModel。当您应该扩展哪个时,上述解释仅用于此。上面的链接一般讲述的是 MVVM 架构的 ViewModel,而不是 android.arch.lifecycle.ViewModel
  • @M0CH1R0N:请阅读以上评论。如果你觉得这是重复的帖子,我会尽快删除它。谢谢。
  • 我的错,我重读了你的问题。 AndroidViewModel 继承了 ViewModel,因此它具有所有相同的功能。 AndroidViewModel 唯一添加的功能是它是上下文感知的:初始化 AndroidViewModel 时,您必须将上下文作为参数传递。例如,如果您想显示敬酒,可以使用此选项。
  • 这个帖子可以重新打开@IntelliJ Amiya吗?
  • 谢谢你。

标签: android android-mvvm android-architecture-lifecycle


【解决方案1】:

扩展我的评论:

AndroidViewModel 扩展了ViewModel,因此它具有所有相同的功能。 AndroidViewModel 唯一增加的功能是它是上下文感知的:初始化 AndroidViewModel 时,您必须将 Application 上下文作为参数传递。

作为一个有用的示例,您可以显示需要应用程序上下文的 toast。

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 2010-12-25
    • 2021-06-04
    • 2017-02-17
    • 2011-09-27
    • 2013-04-22
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多