您的位置:首页 > 其它

关于Intent知识点的总结

2017-05-09 10:25 309 查看
Intent:

Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity,
service和broadcast receiver之间的交互。
Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应。

关键:应用与应用之间通信,同一个应用不同组件(activity,service,broadcastReceiver)通信  
         不同应用之间交互常用方法:
       1.Content Provider (数据共享,不需要Intent) 
         2.通过activity或broadcastReceiver中的ACTION来交互

eg:不同应用交互:(最简单的方式)
App1 发送方:
Intent intent = new Intent("XXX.XXX.XXX");//action一定要匹配才能接收到
intent.putExtra("intent_data","可以携带数据");
startActivity(intent);

App2 接收方:
<activity android:name=".BaseActivity">
<intent-filter>
<action android:name="XXX.XXX.XXX" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>


2.Intent 属性介绍:

Intent由以下各个组成部分:

component(组件):目的组件 :(类似 intent.setClass(Base1Activity.this, Base2Activity.class);

ComponentName cn = new ComponentName(Base1Activity.this, "包名.Base2Activity");
intent.setComponent(cn);


action(动作):用来表现意图的行动
Intent intent = new Intent();
intent.setAction("XXX.XXX.XXX"); // action可以是系统的,也可以是自定义的


category(类别):用来表现动作的类别
   在显示Intent跳转的时候,不需要指定category,但是隐示跳转的时候,指定了category,在清单文件必须加上该category属性

Intent intent = new Intent("xxx.xxx.xxx"); //action
// intent.addCategory("xxx.xxx.xxx"); //指定了category,则接收的时候必须指定,不然不能接收,category可以允许多个
startActivity(intent);  //没有指定category,则接收的时候加载默认的就可以了
<activity
android:name=".BaseActivity">
<intent-filter>
<action android:name="XXX.XXX.XXX" />
<category android:name="xxx.xxx.xxx" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>




data(数据):表示与动作要操纵的数据

type(数据类型):对于data范例的描写

extras(扩展信息):扩展信息 (可以把需要的参数传进来,带到另外的组件)intent.putExtras("xxx","xxx");
Intent intent = new Intent();  //data+type配合 用于调用系统组件,但是注意的是需要在清单文件下面配置各个权限
intent.setAction(Intent.ACTION_VIEW);
Uri data = Uri.parse("http://www.baidu.com");
intent.setData(data);
startActivity(intent);


Flags(标志位):期望这个意图的运行模式
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//用于在非activity里面跳转到activity中

         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//activity依次ABCD,想从D到B,加了这个就为AB,不加ABCDB

       
 intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);//activity不存在栈,用完即消。

 
       intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//把activity设置为栈顶,经常与newIntent()配合使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: