Intent的基础与提升

来源:互联网 发布:painter for mac 2018 编辑:程序博客网 时间:2024/06/15 03:42

Intent的基础与提升

要重新巩固一下Intent的知识了。首先在xml的配置中,我们都能看到:(android:intent.action.MAIN)它是决定这个activity时应用程序最先启动的activity。(android.intent.category.LAUNCHER)它是决定应用程序是否显示在程序列表里。


目录

  • Intent的基础与提升
    • 目录
      • Intent
        • ComponentName
        • Action
        • Category
        • Extra
      • IntentFilter
        • 检查Action
        • 检查Data
        • 检查Category

Intent

Intent代表了Android应用的启动”意图”,Android系统会根据Intent的setClass()方法的第二个参数来指定即将启动的目标组件(博主主要就是用Intent构造方法直接传递参数来跳转Activity)。 Intent由ComponentName,Action,Data,Category,Extra及Flag共六个部分组成,通过调用setXXX()方法来设置对应的属性。

ComponentName

ComponentName对象用于标示唯一的应用程序组件。当指定它时,便是显式的Intent消息(之上的setClass和博主用构造方法直接跳转的都是显式的Intent消息);不指定它时,就是隐式的Intent消息,以及会通过IntentFilter指定的过滤条件选择相应的组件。

Action

Action实际上就是描述了Intent所出发动作的名称的字符串。开发人员可以自定义Action。当使用系统定义的Aciton时,常常需要伴随Data来和Action组合,调用系统的Activity。 (3)Data
Data主要对Intent消息中的数据进行封装,并描述Intent的Action所操作的数据的通用资源标识符(URI)及类型。不同类型的Action会用不同的Data封装。正确的Data封装对Intent匹配请求而言同样重要。

Category

Category是对目标组件类信息的描述,同样为一个字符串对象。一个Intent中可以包含多个Category。

Extra

Extra中封装了一些附加信息,这些信息以键值对的形式存在。Intent可以通过putExtras()和getExtras()方法来存储和获取Extra。 (6)Flag 一些有关系统如何启动组件的标志位,但一般不回使用。

IntentFilter

IntentFilter描述一个多组件愿意接收什么样的Intent对象。
IntentFilter匹配过程:检查Action-》检查Data-》检查Category-》成功跳转,失败抛出异常

检查Action

一个Intent只能由一个Action,一个IntentFilter可以设置多个Action过滤。Intent只要满足一个Action几个完成Action验证。当IntentFilter没有Action,Intent任何Action都不能与之匹配。而如果Intent中没有任何Action,那么只要IntentFilter中含有Action便会匹配成功。

检查Data

数据的监测主要包含数据URI和数据类型两个部分。只有全部匹配,才能检验通过。

检查Category

一个IntentFilter同样可以设置多个Category。当Intent中的Category与IntentFilter中的某个Category完全匹配时,便会通过检查,且其他Category不受影响。当IntentFilter没有设置Category时(default默认值),只能与没有设置Category的Intent相匹配。

0 0