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. P1067 多项式输出 (模拟)

    题目描述 一元nn次多项式可用如下的表达式表示: 其中,a_i x^i 称为i次项,ai​ 称为i次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式: 多项式中自变量 ...

  2. stm32f103定时器

    1)TIM_TimeBaseInitTypeDef 时基初始化结构体,它包括了四个成员函数:TIM_ClockDivision.TIM_CounterMode.TIM_Period.TIM_Presc ...

  3. Spring基于Setter函数的依赖注入(DI)

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/dependency-injection/spring-setter-based-dependenc ...

  4. mysql explain 的type解释

    原文:http://blog.csdn.net/github_26672553/article/details/52058782 Explain命令 用于分析sql语句的执行情况和成本预估 今天我们重 ...

  5. 使用 Git + Dropbox + SourceTree 做 Source Code Management

    此篇文章主要針對有安裝 XCode 的 Mac 用戶. Git 版本控管工具,作用類似 CVS.Subversion(簡 稱SVN),好處在於 Git 不像 CVS 及 SVN 是屬於集中式的版本控管 ...

  6. android 获得屏幕宽度和高度

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  7. Android Camera 拍照 三星BUG总结

    Android Camera 三星BUG  : 近期在Android项目中使用拍照功能 , 其他型号的手机执行成功了  只有在三星的相机上遇到了bug . BUG详细体现为 : (1) 摄像头拍照后图 ...

  8. MYSQL时间戳的处理

    date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y%m%d' 主要是将返回值格式化 例如: mysql>SELECT FROM ...

  9. pdf reference 格式具体说明

    1. PDF概要 1.1. 图像模型 PDF能以平台无关.高效率的方式描叙复杂的文字.图形.排版. PDF 用图像模型来实现设备无关. 图像模型同意应用程序以抽象对象描叙文字.图像.图标.而不是通过详 ...

  10. [LeedCode OJ]#28 Implement strStr()

    [ 声明:版权全部,转载请标明出处,请勿用于商业用途.  联系信箱:libin493073668@sina.com] 题目链接:https://leetcode.com/problems/implem ...