1.什么是Intent?
三个应用程序的核心组件Activity、service和BroadCast Receiver-通过消息激活,这个消息就称为意图。
Intent的工作,就是在各大组件传递数据、传递消息
2.数据传递
语法:Intent.putExtra(key,value);
2-1传递基本数据类型:intent.putExtra("age",15);
intent.getIntExtra("name");
2-2传递对象类型:注意:传递兑现需要实现Serializable或者是Parcelable接口
intent.putExtra("student",student);
Student student=(Student)intent.getSerializableExtra("student");
2-3传递集合类型:注意:集合中的对象需要实现Parcelable接口
intent.putExtra("list",list);
代码在Activity之间数据传递里面写到有
传递数据其实Intent的一个兼职工作,Intent的主要工作是在各大组件中传递消息
3.消息传递
Intent包含的内容:
(1)Component name(组件名称):Intent intent=new Intent();
ComponentName cn=new ComponentName(this,SecondActivity.class);
intent.setComponent(cn);
这种方式被称为显式Intent
(2)Action(动作):intent.setAction(Intent.ACTION_VIEW);
这种方式被称为隐式Intent
(3)Data(操作的数据):Data都是URI类型的数据
(4)Category(分类信息):如果希望Activity能够被隐式启动,则必须加个DEFAULT分类信息
(5)Extras:额外的附加信息
(6)Flags:标志位
Component name,Action,Data,Category四个会与Intent-filter联合使用
4.Intent-filter的匹配模式
①如果Intent-filter中没有指定数据,则不会匹配包含任何数据或数据特征的Intent
②如果Intent设置了Action,那么Intent-filter必须设置该Intent属性,没有action则与所有Intent不匹配
③数据类型:要匹配一种mineType,传入Intent的数据类型必须是Intent-filter中指定的类型之一
④Intent包含的category必须在对应的Intent-filter中设置才能生效。Filter中也可以包含更多的category,没有category则只能与没有提及任何类别的Intent匹配
⑤如果传入的Intent为隐式Intent,startActivity()只会搜索定义了DEFAULT类别的Activity