安卓的四大组件:
Activity Service BroadcastReceiver ContentProvider
Activity、Service、BroadcastReceiver都是通过Intent传递
Intent作用:程序运行过程中连接两个不同的组件,通过Intent程序可向android传递某种请求,android通过请求的内容选择适当组件来完成请求(比如要打开浏览器之类的)【 android根据Intent请求内容查询各组件注册时声明的IntentFilter找到相关的组件】。组件间可以通过Intent进行数据交换
使用Intent的好处:
1、使用同意的Intent封装对不同组件的意图,提供了一致的编程模型
2、满足程序之启动具有某特征组件而不与该组件强耦合的需求,实现松散耦合
Intent(意图)分类:
1、显示意图:明确跳转的组件【择偶到某人】
2、隐式意图:只要符合就可以【只有择偶标准】
Intent的属性:
1、Component(组件)明确指定需要启动的目标组件
2、Action【普通字符串】代表Intent要完成的抽象动作
3、Category(种类)【普通字符串】为Action增加附加类别信息(一些特点)
4、Data【URI对象】 向Action属性提供操作的数据,例如:Tel:--110【协议 主机号 端口号 路径】
5、Type【abc_xyz格式字符串】 指定Data所指定的URI对应的MIME类型
6、Extra【Bundle对象,类似Map存放kye/value】(额外的事物) 用于携带需要交换的数据(在多个组件之间进行数据交换)
7、Flag 添加控制旗标 通过AddFlags方法添加
!注意:每一个Intent只能指定一个Action可以指定多个Category
Data和Type属性互相覆盖,后设置起效。 可以调用Intent的setDataAndType来设定防止覆盖
IntentFilter(意图过滤器) :
AndroidManifest注册组件时可以添加IntentFilter,然后通过Intent的属性来过滤Intent,捕获到满足条件的组件之后启动这个组件——>隐式意图的原理