首页 文章

使用Android 's getBaseContext, getApplicationContext or using an Activity' s“this”的不同规则

提问于
浏览
41

我已经搜索了很多这个问题,并且发现了很多关于何时使用 getBaseContextgetApplicationContext 或者一个Activity自己的 this 指针的不同建议 .

经常出现并且似乎很有意义的三条规则是 -

  • 对于上下文活动的长期引用,只要您的应用程序存在,就应该使用 getApplicationContext

  • 对于生命周期与其活动相关的上下文,应使用自己的活动上下文( this

  • 仅在非常谨慎的情况下静态存储上下文指针(如果可能的话,根本不存在)

假设这些是正确的, getBaseContext 的用途是什么?

我见过许多使用以下方法创建新意图的例子 -

Intent intent = new Intent(getBaseContext(), myClass.class);

与 - 相反 -

Intent intent = new Intent(this, myClass.class);

哪个是正确的,或推荐的方法,为什么?

1 回答

  • 13

    getBaseContext()是ContextWrapper的方法 . 而ContextWrapper是“代理Context的实现,它简单地将所有调用委托给另一个Context . 可以子类化来修改行为而不改变原始Context . ” (根据javadocs)

    因此,这用于将调用委托给另一个上下文 .

相关问题