定义
用于描述应用的动作及其对应数据
作用
①指定当前组件需要做的动作
②在不同组件之间传递数据(Activity、Service、BroadcastReceiver)
使用
指明组件要完成的动作
显式意图
在intent初始化时直接显式传入所需数据
隐式意图
通过action、category、data匹配隐式获取到AndroidManifest中设置好的内容
具体使用在Activity分析中用到
不同组件传递数据
使用方法
putExtra()、Bundle
可传递的数据类型
①8大基本数据类型
②Intent、Bundle
③Serializable对象、Parcelable对象、CharSequence类型
④ArrayList,泛型参数类型为<Integer>、<? Extends Parcelable>、<Charsequence>、<String>
具体使用
在当前Activity中将传递的数据存到Intent中,再在新启动的Activity中取出Intent获取数据
putExtra:
// a. 创建Intent对象(显示Intent)
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
// b. 通过putExtra()方法传递一个字符串到SecondActivity;
// putExtra()方法接收两个参数:第一个是键,第二个是值(代表真正要传递的数据)
intent.putExtra("data","I come from FirstActivity");
// c. 启动Activity
startActivity(intent);
数据获取:
// 2. 数据取出(在被启动的Activity中)
// a. 获取用于启动SecondActivit的Intent
Intent intent = getIntent();
// b. 调用getStringExtra(),传入相应的键名,就可得到传来的数据
// 注意数据类型 与 传入时保持一致
String data = intent.getStringExtra("data");
bundle
// 1. 数据传递
// a. 创建Intent对象(显示Intent)
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
// b. 创建bundle对象
Bundle bundle = new Bundle();
// c. 放入数据到Bundle
bundle.putString("name", "carson");
bundle.putInt("age", 28);
// d. 将Bundle放入到Intent中
intent.putExtras(bundle);
// e. 启动Activity
startActivity(intent);
数据获取:
// 2. 数据取出(在被启动的Activity中)
// a. 获取用于启动SecondActivit的Intent
Intent intent = getIntent();
// b. 通过Intent获取bundle
Bundle bundle = intent.getExtras();
// c. 通过bundle获取数据传入相应的键名,就可得到传来的数据
// 注意数据类型 与 传入时保持一致
String nameString = bundle.getString("name");
int age = bundle.getInt("age");
两种方式的区别
①当涉及连续传递数据时,使用putExtra需要写多次获取、写入数据才能完成操作;而Bundle只需要取出再写入即可
②可传递的内容:putExtra不可传递对象,而Bundle可以通过putSerializable传递实现了Serializable接口的对象。(序列化操作在之前有解析,Parcelable和Serializable都可以)