Intent负责在应用程序的主要部件——活动,服务,广播接收器(处理Android消息)之间传递消
息的信使对象

Intent是对要执行的操作的一种抽象的描述,它除了指定一个动作之外,Intent对象还包含完成
该动作所需的相关数据,以及规定的数据类型,常量,标志,甚至是和动作所需数据相关的附加
数据

由于Intent在Android应用程序组件之间提供了详细的数据并负责处理通讯结构,因此它也是一种
相对复杂的数据结构(对象)

在Android系统中,一共有三种类型的Intent对象可以用于活动,服务和广播接收器之间的通讯,
实际上,每个部件都有属于各自的一种Intent,它们之间不能够混用

基于Intent对象的消息可以包含下列7种不同的信息部件:

  1.组件名称(Component name):Intent及其动作需要传递到目标类的名称,通过包名称和类名称来指定

  2.动作(Action):预先定义的动作类型,如ACTION_DIAL表示拨打电话的动作

  3.数据(Data):需要进行操作的实际数据,例如要查看的数据库记录地址

  4.类别(Dategory):Android系统内置的Intent分为几种不同的类别,以便让它们更容易访问

  5.类型(Type):这个属性同MIME格式指定了数据的类型

  6.标志(Flags):通过Intent可以发送一些只有开/关两种状态的标志。标志一般不会用在通常的Intent中,不过如果是开发需要,可以通过标志来创建更复杂的Intent

  7.附加(Extras):在Intent中,这个参数可以包含任何上述字段以外的附加信息,通过创建非常复杂的Intent

在Intent解析上有显示Intent和隐式Intent之分

显示Intent通过使用Intent对象中的组件名称部分,即ComponentName字段来进行解析;有两种方式指定组件,一种

是通过setComponent()方法,它使用的是ComponentName对象:

  .setComponent(ComponentName);

另一种方式是使用setClass(Content,Class)方法提供准确的类名称来处理该Intent

隐式Intent就是在Intent对象中不指定组件名称的Intent,在这种情况下Android会根据Intent对象的其他参数来判断将

该Intent传递给那些代码来进行妥善的处理

Intent过滤器是在AndroidManifest.XML中通过<intent-filter>标签来进行表明的,它通过Intent对象的7个属性中的3

个动作——动作、数据和类别来对Intent进行过滤

Intent过滤器通过提供一组Intent对象结构的描述来匹配合适的Intent,并且通过一个priority属性来处理同时有多个匹配

的情况。如果灭有指定动作的过滤器,则Intent对象的动作参数不会被判断,而是进行对数据参数的判断。如果数据过滤器

也没有指定,则只有不包含数据的Intent会被匹配

 <intent-filter>
<data android:mimeType="video/mp4" android:scheme="http" />
<data android:mimeType="audio/mp3" android:scheme="http" />
</intent-filter>

对于基于数据特性而进行的Intent过滤,数据参数可以被分解为下面四个子类型:

  1.数据类型(Data Type):MIME数据类型,例如image/jpeg或者audio/MP3

  2.数据规格(Data schema):写成schema://主机地址:端口/路径这样的格式

  3.数据授权(Data authority):和服务器主机地址、端口一起指定

  4.数据路径(Data path):数据路径是一个指向数据未知的地址,例如:http://www.apress.com/datafolder/file1.jpg

什么是Intent的更多相关文章

  1. Parcelable序列化的使用,关于intent.getParcelableArrayExtra的使用

    Parcelable相较于Serializable的效率更高 public class ChargeMode implements Parcelable{ public String name; pu ...

  2. android Intent介绍

    Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 ...

  3. 很不错的Intent用法 适用于正在开发的伙伴。自己看到了,也分享给大家吧。

    本文介绍Android中Intent的各种常见作用. 1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开 ...

  4. 在Android中Intent的概念及应用(二)——Intent过滤器相关选项

    一.如果多个Activity拥有同一个Intent Action,启动时用同一个Action启动会是什么情况? 如何指定某一个Activity启动? 在多个Activity拥有同一个Intent Ac ...

  5. 在Android中Intent的概念及应用(一)——显示Intent和隐式Intent

    Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent ...

  6. Android的Intent.FLAG_ACTIVITY_CLEAR_TOP无效

    转载:http://blog.csdn.net/u011361576/article/details/48626237 今天写代码遇到了一个问题: 当 B - A - B 跳转的时候,使用Intent ...

  7. Intent

    1.http://blog.csdn.net/daogepiqian/article/details/50606474 2.http://blog.csdn.net/wulianghuan/artic ...

  8. Android基础学习第三篇—Intent的用法

    写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...

  9. Android 笔记 Intent and Bundle day7

    学习了Intent与Bundle的使用,进行应用中的交互 package com.example.intent; import android.app.Activity; import android ...

  10. Android Intent Flags

    Intent,顾名思义,即意图,通常用它来启动一个应用程序组件( Activity, Service, 或者 BroadCast Receiver ).在启动一个新的 Activity 时,可以通过给 ...

随机推荐

  1. CSS 选择器语法参考手册

    转自:http://www.w3school.com.cn/cssref/css_selectors.asp CSS3 选择器 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. &quo ...

  2. sugar与阿龙的互怼(第一季)

    §   第一季 回家风波 高考了,啦啦啦~ 快要高考了,显然sugar很伤心. 显然不是因为快要考试了sugar才伤心的. 那为什么??? 因为他们都回家了,但是sugar和他的小伙伴们都不回家!!! ...

  3. Jetson TK1 二:usb无线网卡的使用

    一.总体是按照群里的文档“TK1连接无线网络”的步骤操作的,但也遇到了一些问题,如下: 1.自动配置设备并下载内核源代码到指定的目录下时(估计是解压时),出现时间超前之类的问题,原因是当前本地时间是几 ...

  4. delphi学习路线

     酷派(53376063) 11:04:19 1.语法基础PASCAL精要 先看个1-3遍,这是基础中的基础,只要没弄清楚看10遍都不多,当然最好结合着代码实例去看.(以后遇到哪儿不熟练继续反复看)2 ...

  5. Nginx阻止DDoS攻击的教程收集(转)(待实践)

    DDoS估计是一个非常头痛的问题. 分布式拒绝服务攻击(DDoS)指的是通过多台机器向一个服务或者网站发送大量看似合法的数据包使其网络阻塞.资源耗尽从而不能为正常用户提供正常服务的攻击手段.随着互联网 ...

  6. argument to nsmutablearray method addobject cannot be nil 警告

    You cannot add nil to an NSMutableArray, and you will raise an exception if you try to. There's NSNu ...

  7. [Servlet&amp;JSP] 标准标签

    在JSP的规范中提供了一些标准标签(Standard Tag),全部的容器都支持这些标签,它能够协助编写JSP时降低Scriptlet的使用. 全部的标准标签都使用jsp:作为前置.这些标准标签是在J ...

  8. 使用虚拟机VM运行Linux版OpenERP

    Table of Contents 下载.安装vmware player --免费 从百度云下载 镜像文件 建立vm 运行vm 访问openerp 更新代码至最新         下载.安装vmwar ...

  9. 将世界坐标转成NGUI坐标

    将世界坐标转成NGUI坐标,这个中间须要一个屏幕坐标,可參考例如以下代码: /// <summary> /// 将世界坐标转成UI坐标 /// </summary> /// & ...

  10. socket 网络编程高速入门(一)教你编写基于UDP/TCP的服务(client)通信

    由于UNIX和Win的socket大同小异,为了方便和大众化,这里先介绍Winsock编程. socket 网络编程的难点在入门的时候就是对基本函数的了解和使用,由于这些函数的结构往往比較复杂,參数大 ...