我想了解为什么我们将Context
实例传递给Intent
构造函数?为什么new Intent(SomeActivity.class)
不够? Android会强制执行某些限制吗?
我试图查看代码,但我发现它只是获取包名。
答案 0 :(得分:3)
要明确识别Android应用程序中的活动,您需要同时拥有应用程序的名称(也称为Android应用程序包)和活动的全名(java包名称+活动类的类名称)。这些正是您在构造函数中提供的两个参数。 Context用于获取Android应用程序包名称,而类用于获取完整的类名。
具有相同全名的活动可以在两个应用程序中使用。如果您不提供Context,那么Android将不知道某个活动属于哪个应用程序。
答案 1 :(得分:1)
正如您所猜测的,构造函数中的Context
用于获取应用程序的包名称。
在SomeActivity.class.getPackage().getName()
中从类中推断包名称并不是在每种情况下都有效,因为它可能与应用程序的包名称不同。