我试图理解为什么我们将Context
实例传递给Intent
构造函数?为什么做的还不够new Intent(SomeActivity.class)
?Android是否强制执行一些限制或什么?
我试图查看代码,但我发现它得到了包名称。
要明确识别 Android 应用程序中的 Activity,您需要同时拥有应用程序的名称(也称为 Android 应用程序包)和活动的全名(java 包名 + 活动类的类名)。这些正是您在构造函数中提供的两个参数。上下文用于获取Android应用程序包名,类用于获取完整的类名。
一个全名相同的Activity可以在两个应用中使用。如果你不提供 Context,那么 Android 将不知道一个 Activity 属于哪个应用程序。
如您所料,Context
构造函数中的 用于获取应用程序的包名。
从类中推断包名SomeActivity.class.getPackage().getName()
并非在所有情况下都有效,因为它可能与应用程序的包名不同。