Intent介绍
一、初识Intent
Activity之间交换数据时会用到intent,一个Activity想表达自己的想法就得通过intent,也就是创建intent:
Intent intent = new Intent(MainActivity.this,XxxActivity.class);
startActivity(intent); //启动Activity
作用:Andriod应用中通常会用到三个组件Activity、Service、Broadcast Receiver,他们之间的通信就要用到intent。
举个例子:网购时,卖家需要通过快递员把商品交给我们,我们购买的商品相当于需要传输的数据,卖家把商品打包为一个包裹,该包裹就好比于用来携带数据的Bundle对象,然后交给快递员进行投递,快递员就好比于用来传输数据的intent对象。
应用:从一个Activity开启另一个Activity;从一个Activity开启另一个Service;传递广播
二、Intent属性
(1)ComponentName:设置intent的组件名称,通过这个名称可以启动其他的Activity,使用前先定义该属性的对象,需要传两个参数:该应用的包名、要打开的Activity名称(加类名)
执行代码:
ComponentName componentName = new ComponentName("com.xxx","com.xxx.abcAactivity");
intent.setComponent(componentName);
startActivity(intent);
(2)Action:用来指定将要执行的动作,Data用来指定将要执行的数据,二者通常配合使用。比如一个Activity说“我想要喝牛奶”,那么喝就是Action,牛奶就是Data。
Action通常通过intent定义的Action常量进行设置,可以在sdk的API文档中查询Action常量。
查询方式:
- 打开Android SDK Manager 应用程序。
- 下载安装 Documentation for Android SDK
- 打开Android\sdk\docs目录
- 在docs文件中找到index.html文件双击打开index.html
- 打开后选择develop
执行代码:
intent.setAction(intent.Action常量);
intent.putExtra("xxx","123"); //设置xxx的内容为123
(3)Category:同样是与Action结合使用的属性,对执行动作的类别进行描述,通过intent提供的category常量进行设置,查询方式同Action常量查询方式。
执行代码:
intent.addCategory(intent.Category常量);
(4)Extras属性:用来向intent组件中添加附加信息。通常情况下,附加信息以键值对的形式进行保存。
putExtras():把Bundle对象作为附加数据进行添加
getExtras():获取保存的Bundle信息