首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Architecture组件ViewModel上下文

Architecture组件ViewModel上下文
EN

Stack Overflow用户
提问于 2017-09-19 12:24:27
回答 1查看 9.3K关注 0票数 11

我正在研究google的体系结构组件,以便在我的应用程序中实现ViewModel和LiveData,官方文档中说:

注意:由于ViewModel比特定的活动和片段实例化更长,所以它不应该引用视图或任何可能包含对活动上下文的引用的类。如果ViewModel需要应用程序上下文(例如,查找系统服务),它可以扩展AndroidViewModel类并在构造函数中具有接收应用程序的构造函数(因为Application扩展上下文)

在此之后,我得到了这样的代码:

代码语言:javascript
复制
public class ViewModelTest extends AndroidViewModel {

public ViewModelTest(Application application) {
    super(application);
}

public void test(){
    Prefs.getCurrentCode(getApplication());
}

我应该在活动上实例化它吗?

代码语言:javascript
复制
  val viewModel2 = ViewModelProviders.of(this).get(ViewModelTest::class.java)
    viewModel2.test()

不是很糟吗?当需要访问SharedPreferences或任何需要上下文的内容时,使用此应用程序变量?如果是的话,我应该避免在ViewModel上使用它,而只在视图上使用它吗?特别是,如果我想用需要上下文的值更新UI组件。我不知道该如何处理这个问题,我愿意听取任何建议。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-04-05 17:37:49

AndroidViewModel类是作为android.arch.lifecycle包的一部分提供的,该包是Android体系结构组件的一部分。它本身调用传递给构造函数的应用程序上下文。应用程序上下文存在于整个活动生命周期中。

ViewModel中的应用程序上下文是可以的,因为应用程序上下文与整个应用程序生命周期相关联,而不是与活动生命周期相关联的活动上下文。

ViewModel文档特别提到的不是活动上下文,而是应用程序上下文(如果可以的话)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46300395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档