我想要更好地了解意图(Intents)的主题。
显式意图(Explicit Intent)是根据组件名称进行配置的。在我看到的每个例子中,它都用于启动或停止组件。这是显式意图的唯一目的吗?
隐式意图(Implicit Intent)没有目标组件。隐式意图也可以启动/停止组件,但它们也可以被BroadcastReceiver接收。是否还有另一种方法来接收隐式意图?
当操作系统将意图发送到Action.MAIN时,那是显式意图,对吗?
谢谢。
我想要更好地了解意图(Intents)的主题。
显式意图(Explicit Intent)是根据组件名称进行配置的。在我看到的每个例子中,它都用于启动或停止组件。这是显式意图的唯一目的吗?
隐式意图(Implicit Intent)没有目标组件。隐式意图也可以启动/停止组件,但它们也可以被BroadcastReceiver接收。是否还有另一种方法来接收隐式意图?
当操作系统将意图发送到Action.MAIN时,那是显式意图,对吗?
谢谢。
根据android文档:
显式意图通过名称(完全限定类名)指定要启动的组件。您通常会使用显式意图来启动自己应用程序中的一个组件,因为您知道要启动的活动或服务的类名。例如,在用户操作后启动新活动或在后台下载文件时启动服务。
隐式意图不命名特定组件,而是声明要执行的一般操作,这允许另一个应用程序的组件处理它。例如,如果您想在地图上显示用户位置,则可以使用隐式意图请求其他有能力的应用程序显示指定位置在地图上。
就像你说的那样,显式意图用于启动应用程序中的活动-或从一个“屏幕”转换到另一个。显式意图可能是这样的:Intent intent = new Intent(currentContext, ActivityB.class);
这些意图通常在您的应用程序内部使用,并且根据用户与您的活动交互的方式明确知道要启动哪个组件。
隐式意图并不直接指定应调用哪些Android组件,而只是指定要执行的一般操作。这些通常在您希望某个外部应用程序为您做一些事情时使用。使用隐式意图发送电子邮件的示例:
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"someemail@gmail.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject");
i.putExtra(Intent.EXTRA_TEXT , "body");
Intent是一种用于Android组件(Activity、服务、广播接收器、内容提供者)与操作系统之间通信的对象。
Intent类根据我们的意图提供不同的构造函数。
在某些情况下,Intent发送请求给ActivityManager启动哪个活动。ActivityManager是操作系统的一部分。
现在会有一个问题,为什么我们需要位于应用程序外部的ActivityManager在应用程序内部的两个活动之间进行通信。这里涉及到隐式和显式意图的概念。
显式意图:用于在一个应用程序内部的组件(Activity)之间进行通信。 例如:从一个活动向另一个活动发送当前日期。
隐式意图:用于在不同应用程序的活动之间进行通信。 例如:一个应用程序请求来自相册应用程序的照片。
在隐式意图的情况下,ActivityManager使事情变得更加容易。
正如其名,Intent(意图)--> 它是执行操作的“意图”。
这是一种向其他应用程序或操作系统发送消息以执行操作的方式。
在显式意图中,您知道由哪个人或类执行哪项工作。
在隐式意图中,您只需请求要执行的工作...所有能够执行该活动(例如共享消息)的应用程序都将显示在列表中,您可以从其中任何一个完成您的工作。