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

Lai*_*uan 21 android android-intent

该文件说:

packageContext实现此类的应用程序包的上下文.

但是这是什么意思?哪个班级是"这个班级"?

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

Flo*_*Flo 11

您可以传递从任何应用程序类中获得的任何Context对象.因此,您可以使用Activity,Service对象,也可以调用getApplicationContext()并将返回的Context对象传递给Intent构造函数.

  • 如果我传递的上下文是任意的,为什么我们需要这个参数?为什么这个构造函数是Intent#(Class <?> cls)? (6认同)
  • 我不确定它是否让我的文档更加清晰.我已经从教程中知道我可以在这里传递一个Activity,Service或getApplicationContext().但是文档对我来说仍然没有意义.为什么它被标记为"包"?哪个班级是"这堂课"?怎么样......"应用程序包实现"......,是否有多个潜在的软件包应该在应用程序中或者什么?也许这只是我,也许这只是不幸的措辞. (5认同)

Ani*_*kur 6

将Context视为应用程序的状态.它用于操作应用程序使用的资源和服务,如数据库,本地文件,类加载器,共享首选项等.

当有人打电话给你并询问你的时间时,你说的第一件事是什么......这是什么意思?或者这次谈话的背景是什么?根据具体情况,您可以决定是否值得继续通话.如果你继续,那么对话应该相对容易,因为你已经知道了上下文.

Intents也是如此.什么是意图?有意图的东西 - 其中之一就是开始活动.

Intent intent = new Intent(getApplicationContext(),ActivityTwo.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

如果这让你的概念更清晰,那就让我们继续你的问题和实际的API -

Intent#(Context packageContext, Class<?> cls)
Run Code Online (Sandbox Code Playgroud)

正如你所知,第一个参数应该是Context类型,我们知道它是一个抽象类.通常,您可以传递任何扩展Context类的具体类- Activity类是其中之一(在这种情况下,您只需this在参数中使用).

在此输入图像描述