• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
山高我为峰
博客园    首页    新随笔    联系   管理    订阅  订阅
什么是Intent

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

 

posted on 2016-07-30 17:30  山高我为峰  阅读(775)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3