使用
从ActivityA启动ActivityB有什么区别1. startActivity(this, ActivityB.class);
与
2. startActivity(getApplicationContext(), ActivityB.class);
我通常会看到1.在示例中经常使用1.但我没有遇到过这种情况的原因。
答案 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(包名和类)。上下文用于确定包名称。