Intent 学习笔记(-)
来源:互联网 发布:深圳程序员工资水平 编辑:程序博客网 时间:2024/06/05 20:18
我们知道在android系统中三大核心组件——Activity、Service、BroadcastReceiver 都是依赖于Intent启动的。Intnet里面包含了完成的动作,处理的数据等信息。
一、在Intent里基本有这样几类信息:
componentname
处理intent 的组件的名字。他是可选的。如果设置了,intent对象会被传递给指定类的实例。如果没有设置,Android根据Intnet对象中的信息定位到合适的目标。
Action:表示Intent所要执行的动作。特别是广播中,在Receiver中根据Intent的Action的不同,从而进行不同的逻辑处理。动作的定义在很大程度上决定了Intent数据结构中:data和extras字段的定义。有如,函数名决定了参数和返回值。所以,不要孤立的定义action,而是定义Intnet的整个协议。
Data:表示被作用数据的URI 和数据的MINE类型。不同的Action(动作)对应于不同的Data。。如ACTION_CALL对应于电话号码tel://URI、ACTION_VIEW对应于网络地址的URI。。
Category: 表示需要处理Intent的component组件附加信息。
Extras:表示Intent中所传递的附加信息的键值对
Flags:有各种各样的Flags,很多都是知道Android系统怎么样lauch一个activity,以及启动后怎么处理。
二、 Intent大致可以分为两类:
ExplicitIntents(显示意图),通过设置component name字段直接指定需要传递这个意图的component组件。但是我们不是经常能够知道组件的名字的,特别是不同的应用程序。所以,这个Explicit Intents主要用于程序内部的消息传递。
Implicit Intents(隐式意图),不指定明确的目标组件,这样Android系统就要通过一定的方案找到处理这个intent的最佳组件。它通过比较intent filter的内容,这些东西声明了组件component的“能力”,android系统判断这个能力是否匹配,然后分发Implicit Intent。
在<IntentFilter>中一般描述了三个方面:action、data(URI and data Type)、category。如果一个component的<Intent Filter>里面没有内容,则说明该component不匹配任何Intent,只有三个方面都匹配通过了,Android系统才会把这个Intent消息传递给这个component。当然,每个方面有很多条信息,只需要满足一条则表示该方面通过了。
<intent-filter android:label="@string/resolve_edit"> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.EDIT" /> <action android:name="com.android.notepad.action.EDIT_NOTE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.item/vnd.google.note" /> </intent-filter>
参考资料:
http://blog.csdn.net/liuhe688/article/details/7162988
android开发文档
- Intent机制学习笔记
- Intent学习笔记整理
- Intent学习笔记
- Android学习笔记--Intent
- Intent机制学习笔记
- Intent 学习笔记(-)
- android学习笔记---Intent
- Intent学习笔记整理
- intent 学习笔记
- Android学习笔记 - Intent
- Intent学习笔记
- Intent的学习笔记
- Intent学习笔记
- android学习笔记之Intent&Intent filter
- Intent进阶 和 Intent-filter 学习笔记
- Intent进阶和Intent-filter学习笔记
- Intent进阶 和 Intent-filter 学习笔记
- Intent进阶 和 Intent-filter 学习笔记
- Winfrom固定Label宽度,根据文本动态改变Label的高度
- SVN服务器安装与配置
- 进阶Android
- VMware 8 安装教程
- LeetCode —— Trapping Rain Water
- Intent 学习笔记(-)
- SVN客户端安装与使用
- 点击按钮增加数据框(二级输入目录)
- ViewState机制简述
- RHEL 6u3操作系统上安装ORACLE 10.2.0.1.0版本的数据库,到83%就卡住报错
- 银行卡技术实现和相关银行卡规范(一)
- Howto: Build Linux Kernel Module Against Installed Kernel w/o Full Kernel Source Tree
- Oracle 10g使用游标遍历表数据
- js传值后台中文乱码解决