Android中的Intent是什么?

  • Android中的意图是什么?
  • 有人能举个例子吗?
  • intent的类型是什么,我们为什么要使用它们?
  • 为什么intent在Android中如此重要?
230166 次浏览

意图是对要执行的操作的抽象描述。它可以与startActivity一起使用来启动一个Activity,与broadcastIntent一起使用来将它发送到任何感兴趣的BroadcastReceiver组件,与startService(Intent)或bindService(Intent, ServiceConnection, int)一起使用来与后台服务通信。

欲了解更多详情,请参阅以下链接:

1)。http://developer.android.com/reference/android/content/Intent.html

2) http://developer.android.com/guide/topics/intents/intents-filters.html

3)。http://www.vogella.de/articles/AndroidIntent/article.html

还有更多的文章可用。

意图是一个执行操作的“意图”;换句话说,

一个消息传递对象,你可以用它来请求另一个应用程序组件的动作

一个意图基本上是一个信息,说你已经或想要某事发生。根据意图,应用程序或操作系统可能会监听它,并做出相应的反应。把它想象成一封给一群朋友的爆炸性电子邮件,你告诉你的朋友约翰去做某事,或者告诉会做X (“意图过滤器”)的朋友去做X。其他人会忽略这封电子邮件,但约翰(或会做X的朋友)会对它做出反应。

要监听广播意图(如电话铃声,或收到短信),你实现广播接收器,它将被传递意图。要声明你可以处理另一个应用程序的意图,如“拍照”,你声明意图过滤器在你的应用程序的清单文件

如果你想触发一个意图去做某事,比如弹出拨号器,你发出一个意图说你会。

在编写单个活动之后,需要转换到另一个活动来执行另一项任务,使用或不使用来自第一个活动的信息。

Android平台允许通过意图接口进行转换。

词从这里采取:使用意图演示,我建议你通过这个例子,因为他们也提供了一个代码文件。所以你可以使用它,也很容易理解。

Intent是一个类,用来绑定执行某些操作的信息。

示例:当用户在活动中执行此类操作时,将数据从一个活动传递给另一个活动

目前的活动。

根据他们的文件:

Intent是一个在独立组件(比如两个活动)之间提供运行时绑定的对象。Intent表示应用程序的“做某事的意图”。你可以在各种各样的任务中使用intent,但最常见的是它们被用来启动另一个活动。

以下是示例链接: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent < / p >

正如文档所描述的,为了启动一个活动(你还需要理解什么是活动),使用如下的意图

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}

什么是意图?

意图基本上是在components(如活动服务、广播接收器、内容提供商)之间传递的消息。因此,它几乎等同于传递给API调用的参数。API调用和通过意图调用组件之间的基本区别是:

    API调用是同步的,而基于意图的调用是同步的 李异步的。< / > API调用是编译时绑定,而基于意图的调用是 李运行时绑定。< / >

当然,intent可以通过使用明确的意图,来像API调用一样工作,这将在后面解释。但通常情况下,< >强隐式< / >强劲的意图才是正确的方法,这就是这里所解释的。

一个组件想要调用另一个组件必须只表达它的意图来完成工作。而任何其他存在的组件,并声称它可以通过< >强意图过滤器< / >强完成这样的工作,由Android平台调用来完成这项工作。这意味着,两个组件都不知道彼此的存在,但仍然可以一起工作,为最终用户提供所需的结果。

这种组件之间的隐形连接是通过意图、意图过滤器和Android平台的组合来实现的。

这就带来了巨大的可能性,比如:

  • 在运行时混合和匹配或者更确切地说即插即用组件。
  • 将内置Android应用程序替换为自定义开发的应用程序 李应用。< / >
  • 应用程序内部和应用程序之间的组件级重用。
  • 如果我可以这么说的话,面向服务到最细粒度的级别。

下面是关于Android文档中的intent的附加技术细节。

意图是对要执行的操作的抽象描述。它可以与startActivity一起使用来启动活动,broadcastIntent,将其发送到任何感兴趣的BroadcastReceiver组件,以及startService(意图)bindService(ServiceConnection, int)与后台服务通信。

Intent提供了在不同应用程序的代码之间执行后期运行时绑定的工具。它最重要的用途是启动活动,可以将其视为活动之间的粘合剂。它基本上是一个被动数据结构,包含要执行的操作的抽象描述。意图中的主要信息是:

  • < >强行动 要执行的一般动作,如ACTION_VIEW, ACTION_EDIT, ACTION_MAIN,等等
  • < >强劲数据 对数据进行操作,如联系人中的个人记录
  • .数据库,表示为Uri

了解更多

intent是告诉Android你想做什么的一种方式。 换句话说,你要描述你的意图。意图可以用来向Android系统发出某个事件已经发生的信号。Android中的其他组件可以通过intent filter注册到这个事件

下面是2种类型的意图

1.明确的意图

用于调用特定的组件。当您知道要启动哪个组件,但又不想让用户自由控制使用哪个组件时。例如,您有一个具有2个活动的应用程序。你想从活动A启动活动B。在这种情况下,你定义了一个明确的意图,目标是activityB,然后使用它直接调用它。

2.隐式意图

当您知道要做什么,但不知道应该启动哪个组件时使用。或者,如果您想让用户在要使用的组件列表中进行选择。如果这些intent被发送到Android系统,它会搜索为特定动作和数据类型注册的所有组件。如果只找到一个组件,Android会直接启动该组件。例如,您有一个使用相机拍照的应用程序。您的应用程序的功能之一是您允许用户发送他所拍摄的照片。您不知道用户有什么样的应用程序可以发送照片,而且您还希望为用户提供一个选项,如果他有多个外部应用程序,可以选择使用哪个。在这种情况下,你不会使用显式意图。相反,您应该使用隐式意图,将其动作设置为ACTION_SEND,并将其数据额外设置为照片的URI。

明确的意图总是传递给它的目标,无论它包含什么;没有参考过滤器。但是,只有当隐式意图能够通过组件的一个过滤器时,它才会被传递给组件

意图过滤器

如果一个intent被发送到Android系统,它将为这个intent确定合适的应用程序。如果已经为这种类型的intent注册了几个组件,Android会为用户提供打开其中一个的选择。

这个决定是基于IntentFilters的。IntentFilters指定活动、服务或broadcast Receiver可以响应的Intent类型。Intent Filter声明组件的功能。它指定了一个活动或服务可以做什么,以及接收器可以处理什么类型的广播。它允许相应的组件接收声明类型的intent。IntentFilters通常通过AndroidManifest.xml文件定义。对于BroadcastReceiver,也可以在编码中定义它们。IntentFilters由它的类别、动作和数据过滤器定义。它还可以包含其他元数据。

如果一个组件没有定义Intent过滤器,它只能被显式Intent调用。

下面是定义过滤器的两种方法

1.清单文件

如果你在清单中定义了意图过滤器,你的应用程序不需要运行来响应在它的过滤器中定义的意图。Android在安装应用程序时注册过滤器。

2.广播接收器

如果你想让你的广播接收器只在应用程序运行时接收意图。然后,您应该在运行时(以编程方式)定义您的意图过滤器。请记住,这只适用于广播接收器。

一个Android应用程序可以包含零个或多个活动。当应用程序有多个活动时,通常需要从一个活动导航到另一个活动。在Android中,你通过所谓的意图在活动之间导航。你可以通过使用putExtra()将一些数据传递给你想要通过intent启动的活动。

什么是意图?

它是传递给组件的一种消息或信息。它被用来启动一个活动,显示一个网页,发送短信,发送电子邮件等。

在android中有两种类型的intent:

< p > < br >隐式意图 显式意图< / p >

隐式的意图用于调用系统组件

例子

Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));


startActivity(i);

显式的意图用于调用活动类。

例子

Intent Intent = newIntent (this, SecondActivity.class);

startActivity(intent);

你可以阅读更多

http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html < / p >

Android的意图

Android Intent让你从一个Android活动导航到另一个。通过示例,本教程还讨论了各种类型的Android意图。

Android Intent可以定义为一个简单的消息对象,用于从一个活动通信到另一个活动。

意图定义应用程序的意图。它们还用于在活动之间传输数据。

一个Android Intent可以用来执行以下3个任务:

  1. 从当前活动打开另一个活动或服务
  2. 在活动和服务之间传递数据
  3. 委派责任给另一个应用程序。例如,你可以 使用intent打开浏览器应用程序显示URL。

意图大致可以分为两类。这个类别没有关键字,只是对android意图的使用进行了广泛的分类。

明确的Android意图

显式Android Intent是你显式定义Android系统需要调用的组件的Intent。

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

隐含的Android意图

隐式Android意图不是定义确切的组件,而是定义你想要执行的动作。处理这个操作的决定留给了操作系统。操作系统决定哪个组件最适合用于隐式目的。 让我们看一个例子:

    Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);

欲了解更多信息,请访问下面

http://developer.android.com/reference/android/content/Intent.html < a href = " http://developer.android.com/reference/android/content/Intent.html " > < / >

从广义上讲,我们可以将意图定义为

当一个Activity想要启动另一个Activity时,它会创建一个Object

.调用Intent来指定它想要启动哪个Activity

从论文Deep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013 链接

在一些短小而有效的语句中可以理解其意图

  1. Android通过intent支持一种简单的IPC(进程间通信)形式
  2. Intent messaging是一个用于Android组件(活动、服务、内容提供者、广播接收器)之间异步通信的框架。
  3. 这些组件可以运行在相同的或跨不同的应用程序(即进程)中。
  4. 启用点到点消息传递域以及发布订阅消息传递域
  5. 意图本身表示一条消息,其中包含要执行的操作的描述以及要传递给接收者的数据。

线程中,android架构师Dianne Hackborn给出了一个简单的答案,即它实际上是data container

从android架构的角度来看:

Intent是一个用于进程间通信的数据容器。从android架构的角度来看,它构建在Binder之上。

意图用于从一个活动启动另一个活动。它主要用于几个目的,例如从一个活动向另一个活动发送数据,以及用于触发目的。

它们基本上有两种类型

  1. 隐式意图。

  2. 明确的意图。

作为一个初学者,我知道这些,我认为这将给一些关于机器人意图的基本概念

意图基本上是一种将数据从一个活动传递到另一个活动的方式