1.介绍
Intent可以启动Activity,也可以启动Service,还可以发起广播Broadcasts
Intent的中文意思是“意图,意向”,这个类用于提供信息以供对应的函数使用
Intent的对应函数:
组件名称 | 函数名称 |
---|---|
Activity | startActvity() |
Service | startService() bindService() |
Broadcasts | sendBroadcasts() sendOrderedBroadcasts() sendStickyBroadcasts() |
Intent的重要成员:
成员名称 | 释义 |
---|---|
Action | 动作(意图) |
Data | 传递的数据 |
extras | 额外的数据 |
category | 目标所具有的特征 |
type | 目标所能处理的数据类型 |
component | 目标组件的包名或类名 |
2.应用
//AndroidManifest.xml
<activity android:name=".TestActivity">
<intent-filter>
//可以理解为给组件添加标签,用以找到和标签对应的组件
//系统定义的标签,与其绑定的组件有不同的作用
//比如:activity:电话,短信,联系人,网页浏览,....
<action android:name="com.example.nihuai.intent.action.Test"/>
//Intent默认参数,必须添加
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
//Activity.java
//从A窗口跳转到B窗口,不带数据
public void gotoTestActivity1(View view)
{
1.隐式(系统会去注册的组件中找和标签匹配的组件,和其绑定的类)
//请参考上面的:AndroidManifest.xml
Intent intent = new Intent("com.example.nihuai.intent.action.Test");
//从A窗口跳转到B窗口
startActivity(intent);
}
//Activity.java
//从A窗口跳转到B窗口,不传递数据
public void gotoTestActivity2(View view)
{
2.显示(系统不需要找,参数提供了和组件绑定的类,所以不用添加标签)
//参数2:和组件绑定的类
Intent intent = new Intent(A.this,B.class);
//从A窗口跳转到B窗口
startActivity(intent);
}
//Activity.java
//从A窗口跳转到B窗口,传递数据
//可在B窗口创建时取出数据
//系统的打电话就是在创建的时候取出数据
//并调用了设置电话号码和拨打电话
public void gotoTestActivity2(View view)
{
2.显示(系统不需要找,参数提供了和组件绑定的类,所以不用添加标签)
//参数2:和组件绑定的类
Intent intent = new Intent(A.this,B.class);
String data = "nihuai";
intent.putExtra("putData",data);
startActivity(intent);
}
3.总结
intent的成员变量分三类:
1.系统根据标签定位组件:(Action,category,type,Data)
给组件加标签(AndroidManifest.xml)
系统根据提供的标签匹配和组件绑定的类
调用类中的onCreate来创建组件
2.明确的目标组件(component)
设置成员变量内容:setComponent
系统不会在根据标签来匹配对应的组件
因为它指定了和目标组件绑定的类
调用类中的onCreate来创建组件
3.传递数据:(Data,extras)
Data可以当参数传递,也可以当标签来定位组件
数据可以传递给启动的组件
数据可以从启动的组件传递给调用它的组件(上一层组件)
参考书籍:
第一行代码(第2版)
网友评论