基础-3 ANDROID Intent

来源:互联网 发布:监控windows进程排名 编辑:程序博客网 时间:2024/05/22 13:13

一个android程序又多个组件组成,各个组件使用Intent进行通信,intent 对象包含组件名称,动作,数据,根据intent类容,android启动需要的组件。

Intent寻找目标组件的两种方式:

显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。

 Intent i = new Intent(MainActivity.this,AActivity.class); startActivity(i);

隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。

 Intent i = new Intent(); i.setAction("android.intent.action.DEMO_ACTIVITY"); startActivity(i);

Intent对象包含的内容
1.componentName(组件名称),指定Intent的目标组件的类名称。

    Intent intent = new Intent();      // 构造的参数为当前Context和目标组件的类路径名      ComponentName cn = new ComponentName(MainActivity.this, "android.intent.action.DEMO_ACTIVITY");      intent.setComponent(cn);      startActivity(intent);  

2.action(动作),指定Intent的执行动作,比如调用拨打电话组件。
3.data(数据),起到表示数据和数据MIME类型的作用。不同的action是和不同的data类型配套的,通过设置data的Uri来获得。

 Intent i = new Intent(); Uri uri = Uri.parse("tel:10086"); i.setAction(Intent.ACTION_CALL); i.setData(uri); startActivity(i);

4.category(类别),被执行动作的附加信息。例如应用的启动Activity在intent-filter中设置category。

    <intent-filter>          <action android:name="android.intent.action.MAIN" />          <category android:name="android.intent.category.LAUNCHER" />      </intent-filter>  

5.extras(附加信息),为处理Intent组件提供附加的信息。可通过putXX()和getXX()方法存取信息;也可以通过创建Bundle对象,再通过putExtras()和getExtras()方法来存取。
6.flags(标记),指示Android如何启动目标Activity,设置方法为调用Intent的setFlags方法。常用的Flags参数有:
//如果activity在task存在,拿到最顶端,不会启动新的Activity
intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
//如果activity在task存在,将Activity之上的所有Activity结束掉
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//默认的跳转类型,将Activity放到一个新的Task中
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//如果Activity已经运行到了Task,再次跳转不会在运行这个Activity
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

0 0