使用Android getBaseContext,getApplicationContext或使用Activity的“this”的明确规则

时间:2011-03-28 11:13:09

标签: android android-context

我已经搜索了很多这个问题,并且发现了很多关于何时使用 getBaseContext getApplicationContext 或者活动自己这个的不同建议指针。

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

  1. 长期参考a 情境活动 应该使用 getApplicationContext 因为只要你的存在就存在 应用程序存在
  2. 对于生命周期为的情境 他们的活动,他们自己 活动背景()应该是 使用
  3. 静态存储上下文指针 只是非常谨慎(如果 可能,完全没有)
  4. 假设这些是正确的, getBaseContext 有什么用?

    我见过很多使用 -

    创建新意图的例子
    Intent intent = new Intent(getBaseContext(), myClass.class);
    

    与 -

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

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

1 个答案:

答案 0 :(得分:13)

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

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