在显式意图中使用Context

时间:2012-01-19 08:51:28

标签: android

使用

从ActivityA启动ActivityB有什么区别
1. startActivity(this, ActivityB.class);

2. startActivity(getApplicationContext(), ActivityB.class);

我通常会看到1.在示例中经常使用1.但我没有遇到过这种情况的原因。

3 个答案:

答案 0 :(得分:3)

如果您的Activity经历配置更改(如轮换)并且被销毁并再次创建,则作为上下文(this)的活动引用可能会过时。然而,getApplicationContext()收到的上下文会在整个过程中持续存在。

但是,在我看来,只有在将Activity绑定到Service或其他类似场景时才会出现问题,因此在意图启动另一个Activity时使用this是安全的。

答案 1 :(得分:1)

没有区别。根据{{​​3}}和Intent的源代码 - 使用表单上下文的唯一事情是按context.getPackageName()获取包名称。 <{1}}和Activity.this的包名称相同,因此没有区别。

答案 2 :(得分:0)

我假设你实际上是在询问

之间的区别
startActivity(new Intent(this, ActivityB.class));

startActivity(new Intent(getApplicationContext(), ActivityB.class));

没有区别。 Android需要ComponentName(包名和类)。上下文用于确定包名称。