intent 详解

来源:互联网 发布:原油手机行情分析软件 编辑:程序博客网 时间:2024/06/04 00:22

andorid 提供的 intent 机制可以进行应用程序之间的交互与通讯,同时也是四大组件之间通讯与数据传递的桥梁。

它可以在程序运行时,连接两个不同的组件。

intent的基本属性:

~action(动作):intent(意图)的行为,一般的动作有intent.action_view打开浏览器,,

intent.action_pick选择联系人,照片等,,,intent,action_send调用系统的分享。

~category(类型):action与category一般一起使用,在自定义action时:

intent i= new intent();

i.setaction("com.android.myaction");需要在AndroidManifest.xml中配置<action android:name="com.android.myaction"> 如果没有特别自定义catogory,需要配置默认的category

<category android:name="android.intent.category.default">因为intent在过滤筛选的时候会默认添加到intent中

然后跳转到指定的组件中,如果有多个组件匹配成功,就会以对话框的形式进行选择,其中可以设置优先级进行排序

android:priority 优先级的范围是-1000到1000。

intent通过addcategory添加多个category,越多intent筛选精度越高,这里是并的关系。

~component(组件):目的组件,intent通过设置component进行显示意图的跳转,

如:   ComponentName name  = new ComponentName(Context,MainActivity.class);调转当前应用的activity ComponentName name  = new ComponentName("pagename","class");可以进行跨程序其他activity,同时要在清单文件的activity中配置android:exported="true"允许外部程序访问intent.setComponent(name);
~data(数据):data是一个以Uri对象表示的,我们一般以action+data来描述一个意图目的,如intent.setaction(Intent.action.view),intent.setdata(Uri.parse("http://www.baidu.com"));也可以在intent-filter中配置data

节点 <data android:scheme="http" > scheme://host:port/pathscheme:协议一般的协议有file:/// content:///,http:/// 

host:域名,port端口号,path就是servlet后面的路径名加参数

~type(数据类型):是对data范例的描写,type属性用于明确指定data的数据类型和mime类型,一般type和打他只需要设置一个,在settype的时候会设置data为null,setdata是把type设置为null,只有通过setdataandtype进行data与type同时使用如:intent.setdataandtype(Uri.parse("file:///storage/sdcard0/告别气球.mp3"),"audio/mp3");

进行音乐的播放

~flag(标志位):意图的运行模式,如通过intent.setflag(intent.flag_activity_new_task);以singletask的形式启动activity,singletask是activity的四个启动方式之一,如果栈中存在这个activity直接启动,如果不存在就创建这个activity,同时,如果这个activity不在栈顶,回把activity之上的所有activity全部清除。

~extras(扩展):扩展信息(用的不多)

intent如何启动组件:

通过startactivity与startactivityforresult进行activity的启动

startservice:调用的service的生命周期,oncreate->onstart(过时)
onstartcomend取代onstart方法,通过stopservice结束,intentservice调用stopservice也需要执行完任务才会停止
bindService:调用oncreate->onbind,此方式开启的service与应用程序的生命周期
紧密关联,应用程序退出,调用unbindservice接触绑定,service的生命周期也结束。
sendorderBroadcast(有序广播,通过abort中止传播),sendbroadcase,sendstickyBroadcast粘性广播

0 0