Android 基础知识--intent的使用

时间:2022-06-07 13:05:55

Android中Intent的使用

Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。

Intent的构成
要在不同的activity之间传递数据,就要在intent中包含相应的内容,一般来说数据中最基本的应该包括:
Action:用来指明要实施的动作是什么,比如说ACTION_VIEW, ACTION_EDIT等。具体的可以查阅android SDK-> reference中的Android.content.intent类,里面的constants中定义了所有的action。
Intent对象包含的内容
在Intent类的Java源代码中定义了Intent相关内容的变量,如下:

// Action
private String mAction;
// Data
private Uri mData;
private String mType;
private String mPackage;
// ComponentName
private ComponentName mComponent;
// Flag
private int mFlags;
// category
private HashSet mCategories;
// extras
private Bundle mExtras;

1.componentName(组件名称),指定Intent的目标组件的类名称。组件名称是可选的,如果填写,Intent对象会发送给指定组件名称的组件,否则也可以通过其他Intent信息定位到适合的组件。组件名称是个ComponentName类型的对象。
2.action(动作),指定Intent的执行动作
3.data(数据),起到表示数据和数据MIME类型的作用。不同的action是和不同的data类型配套的,通过设置data的Uri来获得。
4.category(类别),被执行动作的附加信息。例如应用的启动Activity在intent-filter中设置category。

5.extras(附加信息),为处理Intent组件提供附加的信息。可通过putXX()和getXX()方法存取信息;也可以通过创建Bundle对象,再通过putExtras()和getExtras()方法来存取。
6.flags(标记),指示Android如何启动目标Activity,设置方法为调用Intent的setFlags方法。常用的Flags参数有:
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_NO_HISTORY
FLAG_ACTIVITY_SINGLE_TOP

Intent的投递
1.显式方式。直接设置目标组件的ComponentName,用于一个应用内部的消息传递,比如启动另一个Activity或者一个services。
通过Intent的setComponent和setClass来制定目标组件的ComponentName。
2.隐式方式。ComponentName为空,用于调用其他应用中的组件。需要包含足够的信息,这样系统才能根据这些信息使用intent filter在所有的组件中过滤action、data或者category来匹配目标组件。

Intent intent=new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);