Android开发探索第一章 Activity生命周期及启动模式总结(三)

来源:互联网 发布:交换机更换网络 编辑:程序博客网 时间:2024/04/30 07:07

Activity的启动分为两种:隐式启动显示启动

原则上一个Intent不应该即是显示调用又是隐式调用,如果两者共存的话,以显示调用为主。

这里主要总结下隐式调用

隐式调用需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息。IntentFilter中的过滤信息主要有:action、category、data。

action和category比较简单,系统预定义了一些,我们也可以自定义。

data相对比较复杂,它是由两部分组成的,mimeType和URI。

mimeType:它是指媒体类型。用来说明本Activity可以处理的文件类型,如设置为 “text/plain”表示可以处理“.txt”文件。

URI:下面是一个URI的基本结构

<scheme>://<host>:<post>/[<path>|<pathPrefix>|<pathPattern>]
 如 file://abc
<data     android:mimeType="text/plain"     android:scheme="file"     android:host="abc"    />

URI必须要设置scheme和host属性,否则其他参数设置无效

匹配规则和注意

1.IntentFilter中至少有一个action,可以没有category和data。

2.任何一个需要隐式调用的Activity,都要设置

<category android:name="android.intent.category.DEFAULT"/>原因是系统调用startActivity或startActivityForResult方法时会默认为Intent加上"android.intent.category.DEFAULT"这个category

3.Intent中至少有一个action,可以没有category,如果IntentFilter中有data,那么Intent中必须也要定义可匹配的data。

4.Intent中添加的任何匹配规则都要和IntentFilter中的匹配规则相匹配,IntentFilter中的匹配规则在Intent中可以没有

5.Intent设置匹配data时,要使用setDataAndType方法,不能使用setData和setType分别设置,这两个方法会互相清除对方的值

6.特殊的一组action和category:

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

这两者共同作用表明这是一个入口Activity并且会出现在系统的应用列表中,少任何一个都没有实际意义(这一组不需要添加上述规则2)

0 0
原创粉丝点击