42

我在谷歌上搜索了很多这个问题,并发现了很多关于何时使用getBaseContextgetApplicationContext或 Activity 自己的this指针的不同建议。

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

  1. 对于上下文活动的长期引用 ,只要您的应用程序存在,就应该使用getApplicationContext
  2. 对于生命周期与其活动绑定的上下文,应该使用它们自己的活动上下文( this )
  3. 仅在非常谨慎的情况下静态存储上下文指针(如果可能,根本不要)

假设这些都是正确的,那么getBaseContext有什么用?

我已经看到了很多使用创建新意图的示例 -

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

相对于——

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

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

4

1 回答 1

13

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

所以这用于将调用委托给另一个上下文。

于 2011-03-28T11:19:33.300 回答