Intent#中的packageContext是什么(Context packageContext,Class <! - ? - > cls)?

时间:2011-04-09 09:41:31

标签: android android-intent

该文件说:

  

packageContext的一个上下文   应用程序包实现此   类。

但它是什么意思?哪个班级是“这个班级”?

为什么new Intent(this,XXX.class)有效?

4 个答案:

答案 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)。

enter image description here

答案 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}}