在Android系统的设计中有四大组件:Activity,Service,BroadcastReceiver,ContentProvider。Intent可以被应用于ContentProvider之外的其它三种组件之间互连互通,共享和交互数据(甚至跨越了进程的限制),很大程度的解决了组件之间的耦合性,使组件更加独立。因此有人把Intent定为第五大组件。从字面上来讲,Intent是“意图,意愿”的意思,它服务于其它的组件,因此其自身的设计具有很大的通用性。本文主要介绍,完成这些强大功能背后的属性

  1.ComponentName

  Intent 主要被分为两类:显性(Explicit Intent)和隐性(Implicit Intent)。ComponentName主要被用于显性Intent中,它明确了需要被启用的组件的名称(如果是同一个程序内的其它组件,则只需具体的ComponentName;如果在不同的应用中需要添加PackageName),这样系统就会将该Intent发送到对应的组件中;

  2.Category

  Category是种类的意思,它将Intent从大的范围上进行了分类,相比具体的ComponentName更加宽范。Android系统中已经预设了一些范围或功能。当然同样是可以自定义的。下表展示了一些比较常用的属性介绍:

Category名字 描述
CATEGORY_DEFAULT 默认的Category值。使用隐式Intent方式启动组件时,Category是必须的。如果没有指定系统在启动组件的时候会默认加上CATEGORY_DEFAULT,因此在组件注册的地方的Intent过滤器中也要加上CATEGORY_DEFAULT才能使用
CATEGORY_HOME 表明这个应用是操作系统启动后,启动的第一个应用。一般是Launcher所需要使用的
CATEGORY_LAUNCHER 这个属性值表示组件可以被放到启动列表(Launcher)中来进行启动(一般为应用程序入口)

          

                

  3.Action

  Action是动作的意思,表明要做什么事。Android系统同样定义了很多Action,通过这些Action可以启动一些系统级的组件(功能)来做一些事情。同样Action可以进行自定义,启用我们启用的组件。下表展示了一系统的比较常用的Action

Action名字 描述
ACTION_MAIN 表明由此组件开始新的任务,一般为就用的入口Activity使用
ACTION_CALL 启用一个拨打电话的Activity
ACTION_ANSWER 组件处理呼入的电话

  

  4.Data

  Data即表示需要Intent携带的数据,它可以将数据从源组件带到目标组件中,供目标组件的使用。它一般采用了类似scheme://uri的表达方式,同时指这了数据的MIME类型

  5.Extras

  Extras 是对上面Data数据的补充,与Data不同的是它采用key-value的方式保存数据的。它的内部是能过一个Bundle对象来保证数据的准确性和守整性的

  6.Flags

  Flags主要运用在Activity组件的启动上,其主要作用与Activity的LauncherMode有关。它规定了系统如何启用一个Activity组件以及Activity所属的TASK

上面的这些属情的定义保证的Intent的核心功能和其不可或缺的地位:待激活组件筛选(ComponentName,Category,Action);共享数据(Data,Extras)以及更加具体化的Activity组件的启动模式相关的(Flags)

Intent的属性介绍的更多相关文章

  1. Intent官方教程(3)各属性介绍

    Building an Intent An Intent object carries information that the Android system uses to determine wh ...

  2. Activity启动模式 及 Intent Flags 与 栈 的关联分析

     http://blog.csdn.net/vipzjyno1/article/details/25463457    Android启动模式Flags栈Task   目录(?)[+] 什么是栈 栈 ...

  3. 【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析

    http://blog.csdn.net/vipzjyno1/article/details/25463457    在学习Android的过程中,Intent是我们最常用Android用于进程内或进 ...

  4. Intent的Data和Type和Flag属性-amdroid学习之旅(五十一)

    Data属性介绍 使用Data和Action属性启动系统Activity 代码示例 public class MainActivity extends Activity{ @Override prot ...

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

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

  6. android Intent介绍

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

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

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

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

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

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

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

随机推荐

  1. Unity3D之Mecanim动画系统学习笔记(三):Animation View

    动画组件之间的关系 我们先看一张图: 这里我们可以看到,我们在GameObject之上绑定的Animator组件是控制模型进行动画播放的. 而其属性Controller则对应一个Animator Co ...

  2. 关于在Eclipse中使用正则表达式替换的一点记录(使用正则表达式的分组)

    今天在工作中遇到了点替换的麻烦事,由于数据类进行了变动,具体情况是这样的,需要将下面的代码: player.skillData[i].name 替换为: player.skillData.getSki ...

  3. C#全角半角转换函数

    Code#region 全角半角转换 /// <summary> /// 转全角的函数(SBC case) /// </summary> /// <param name= ...

  4. glsl水包含倒影的实现(rtt) [转]

    转自 http://blog.sina.com.cn/s/blog_78ea87380101eixi.html 此文实现一个简单地水面倒影效果,通过rtt相机 获取倒影纹理, 水的基本实现方法(参考前 ...

  5. Java中Scanner的使用方法

      Scanner是SDK1.5新增的一个类,但是使用该类创建一个对象.Scanner reader=new Scanner(System.in); 然后reader对象调用下列方法(函数),读取用户 ...

  6. decide your linux OS is GUI or not

    Try:  ps -ef|grep X  The ps command will display information about a selection of the active process ...

  7. TV

    https://github.com/Xs4allWebTV/androidhttps://github.com/mode89/video-feedhttp://www.javaapk.com/sou ...

  8. SON-RPC for Java

    JSON-RPC for Java https://github.com/briandilley/jsonrpc4j#json-rpc-for-java This project aims to pr ...

  9. HDU3572 Task Schedule 【最大流】

    Task Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  10. 关于flash player debugger 无法弹窗报错的解决办法

    第一个是IE的插件, Download the Windows Flash Player 10.2 ActiveX control content debugger (for IE) (EXE, 2. ...