Intent的属性介绍
在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的属性介绍的更多相关文章
- Intent官方教程(3)各属性介绍
Building an Intent An Intent object carries information that the Android system uses to determine wh ...
- Activity启动模式 及 Intent Flags 与 栈 的关联分析
http://blog.csdn.net/vipzjyno1/article/details/25463457 Android启动模式Flags栈Task 目录(?)[+] 什么是栈 栈 ...
- 【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析
http://blog.csdn.net/vipzjyno1/article/details/25463457 在学习Android的过程中,Intent是我们最常用Android用于进程内或进 ...
- Intent的Data和Type和Flag属性-amdroid学习之旅(五十一)
Data属性介绍 使用Data和Action属性启动系统Activity 代码示例 public class MainActivity extends Activity{ @Override prot ...
- Parcelable序列化的使用,关于intent.getParcelableArrayExtra的使用
Parcelable相较于Serializable的效率更高 public class ChargeMode implements Parcelable{ public String name; pu ...
- android Intent介绍
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 ...
- 很不错的Intent用法 适用于正在开发的伙伴。自己看到了,也分享给大家吧。
本文介绍Android中Intent的各种常见作用. 1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开 ...
- 在Android中Intent的概念及应用(二)——Intent过滤器相关选项
一.如果多个Activity拥有同一个Intent Action,启动时用同一个Action启动会是什么情况? 如何指定某一个Activity启动? 在多个Activity拥有同一个Intent Ac ...
- 在Android中Intent的概念及应用(一)——显示Intent和隐式Intent
Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent ...
随机推荐
- 如何在Visual Studio中选择C++和C#的编译器版本
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何在Visual Studio中选择C++和C#的编译器版本.
- 理解Android Java垃圾回收机制
Jvm(Java虚拟机)内存模型 从Jvm内存模型中入手对于理解GC会有很大的帮助,不过这里只需要了解一个大概,说多了反而混淆视线. Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆.堆是运行时 ...
- opencv 手势识别
我使用OpenCV2.4.4的windows版本+Qt4.8.3+VS2010的编译器做了一个手势识别的小程序. 本程序主要使到了Opencv的特征训练库和最基本的图像处理的知识,包括肤色检测等等. ...
- Unix: How to Install BerkeleyDB From Source
http://www.masaokitamura.com/2010/07/23/unix-how-to-install-berkeleydb-from-source/ This documentati ...
- Codeforces Testing Round #12 B. Restaurant 贪心
B. Restaurant Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/597/problem ...
- Codeforces Round #313 (Div. 2) B. Gerald is into Art 水题
B. Gerald is into Art Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/560 ...
- Android源码编译的全过程记录
写本篇文章主要参考了官方文档和网上的一些资料,但是对于Android最新的代码来说,网上资料有些已经过时.本文中步骤已经作者实验,大家可以亲自执行试试.由于没有使用Eclipse的习惯,所以没有做Ec ...
- C++函数的传入参数是指针的指针(**)的详解
要修改变量的值,需要使用变量类型的指针作为参数或者变量的引用.如果变量是一般类型的变量,例如int,则需要使用int 类型的指针类型int *作为参数或者int的引用类型int&.但是如果变量 ...
- px,em,rem的区别
PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firefox能够调整px和em,rem,但是96%以上 ...
- Android N分屏模式Activity生命周期的变化
昨天Google发布了Android N Preview, balabala....我是用模拟器去验证的, 通过长按多任务窗口(口)进入分屏模式, 这里只进行了简单的测试, 不排除通过配置哪个参数, ...