在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. 用6个字符写出任意的Javascript代码

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用6个字符写出任意的Javascript代码.

  2. PostgreSQL的 initdb 源代码分析之十二

    继续分析 /* Now create all the text config files */ setup_config(); 将其展开: 实质就是,确定各种参数,分别写入 postgresql.co ...

  3. C++中使用union的几点思考(转)

    C++中使用union的几点思考 大卫注:这段时间整理旧资料,看到一些文章,虽然讲的都是些小问题,不大可能用到,但也算是一个知识点,特整理出来与大家共享.与此相关的那篇文章的作者的有些理解是错误的,我 ...

  4. C++ AfxBeginThread

    计算从1+2+3...+100000=? 关键点 CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, in ...

  5. android.content.res.Resources$NotFoundException:String resource ID #ffffffff

    无语,搞了半天,只能去插这个错误代号,结果就找到了这个结果. scoreTextView.setText(score+""); 这个一定要自己手动转换..不科学啊..关键是在ecl ...

  6. 测试JS

    <html> <head> </head> <body> <script> function loadScript(url, callbac ...

  7. centos6.x已经安装的系统添加图形界面

    yum groupinstall "X Window System" yum groupinstall GNOME Desktop Environment

  8. 解析“extern”

    解析“extern” 1. 声明外部变量 现代编译器一般採用按文件编译的方式,因此在编译时,各个文件里定义的全局变量是 互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部.以下举一个简单的 ...

  9. Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 其他数据类型(二)

    1.方法 定义如下所示: def string_message(str='') if str.empty? "It's an empty string!" else "T ...

  10. JSONP(处理跨域问题)

    Ajax直接请求普通文件存在跨域无权限访问的问题 凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>.<img>.<iframe& ...