使用Android的getBaseContext,getApplicationContext或者使用Activity的“this”

我已经使用了这个问题了很多,并发现了什么时候使用getBaseContextgetApplicationContext或一个Activity自己的这个指针的许多不同的build议。

经常出现的三条规则似乎很有意义 –

  1. 对于上下文活动的长期引用,只要应用程序存在,就应该使用getApplicationContext,因为这存在
  2. 对于生命周期与其活动密切相关的环境,应该使用自己的活动环境( this
  3. 静态存储上下文指针只是非常谨慎(如果可能的话,根本不会)

假设这些都是正确的, getBaseContext的用法是什么

我已经看到了很多例子,其中使用了新的意图 –

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

与 –

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

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

getBaseContext()是ContextWrapper的方法。 ContextWrapper是“代理上下文的实现,它将所有调用简单地委托给另一个上下文,可以被修改为不改变原始上下文的子类。 (根据javadocs)

所以这是用来委托调用另一个上下文。