我已经搜索了很多这个问题,并且发现了很多关于何时使用 getBaseContext , getApplicationContext 或者一个Activity自己的 this 指针的不同建议 .
经常出现并且似乎很有意义的三条规则是 -
-
对于上下文活动的长期引用,只要您的应用程序存在,就应该使用 getApplicationContext
-
对于生命周期与其活动相关的上下文,应使用自己的活动上下文( this )
-
仅在非常谨慎的情况下静态存储上下文指针(如果可能的话,根本不存在)
假设这些是正确的, getBaseContext 的用途是什么?
我见过许多使用以下方法创建新意图的例子 -
Intent intent = new Intent(getBaseContext(), myClass.class);
与 - 相反 -
Intent intent = new Intent(this, myClass.class);
哪个是正确的,或推荐的方法,为什么?
1 回答
getBaseContext()是ContextWrapper的方法 . 而ContextWrapper是“代理Context的实现,它简单地将所有调用委托给另一个Context . 可以子类化来修改行为而不改变原始Context . ” (根据javadocs)
因此,这用于将调用委托给另一个上下文 .