该文件说:
packageContext的一个上下文 应用程序包实现此 类。
但它是什么意思?哪个班级是“这个班级”?
为什么new Intent(this,XXX.class)
有效?
答案 0 :(得分:11)
您可以传递从任何应用程序类中获得的任何Context对象。因此,您可以使用Activity,Service对象,也可以调用getApplicationContext()并将返回的Context对象传递给Intent构造函数。
答案 1 :(得分:6)
将Context视为应用程序的状态。它用于操作应用程序使用的资源和服务,如数据库,本地文件,类加载器,共享首选项等。
当有人打电话给你并询问你的时间时,你说的第一件事是什么......这是什么意思?或者这次谈话的背景是什么?根据具体情况,您可以决定是否值得继续通话。如果你继续,那么对话应该相对容易,因为你已经了解了背景。
与Intents相同。什么是意图?有意图的东西 - 其中之一就是开始活动。
Intent intent = new Intent(getApplicationContext(),ActivityTwo.class);
startActivity(intent);
如果这让你的概念更清晰,那就让我们继续你的问题和实际的API -
Intent#(Context packageContext, Class<?> cls)
正如你所知,第一个参数应该是Context类型,我们知道它是一个抽象类。通常,您可以传递任何扩展Context
类的具体类 - Activity
类是其中之一(在这种情况下,您只需在参数中使用this
)。
答案 2 :(得分:1)
我认为它是与实现当前类的应用程序包相关的上下文。
例如,如果您在dog类中并且具有以下包结构com.mycompany.dogfinder.dog,则包上下文引用与实现dog类的包关联的上下文。在这种情况下,与dog类关联的上下文将是与com.mycompany.dogfinder应用程序包相关的上下文。
我花了一些时间来弄清楚说的是什么,但我认为这就是它的含义。
答案 3 :(得分:0)
从活动开始活动:
public Intent(Context packageContext, Class<?> cls) {
mComponent = new ComponentName(packageContext, cls);
}
// Identifier for a specific application component
public ComponentName(Context pkg, Class<?> cls) {
mPackage = pkg.getPackageName();
mClass = cls.getName();
}
意图使用上下文仅创建ComponentName:
{{1}}