1.请描述一下Intent和IntentFilter。
Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,
还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。
对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。
通过Intent 可以实现各种系统组件的调用与激活.
data/system/package.xml
Intent filter: 可以理解为邮局或者是一个信笺的分拣系统…
这个分拣系统通过3个参数来识别
Action: 动作 view
Data: 数据uri uri
Category : 额外的附加信息
Action 匹配
Action 是一个用户定义的字符串,用于描述一个 Android 应用程序组件,一个 Intent Filter 可以包含多个 Action。在 AndroidManifest.xml 的 Activity 定义时可以在其 <intent-filter >节点指定一个 Action 列表用于标示 Activity 所能接受的“动作”,例如:
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<action android:name="cn.itcast.action" />
……
</intent-filter>
如果我们在启动一个 Activity 时使用这样的 Intent 对象:
Intent intent =new Intent();
intent.setAction("cn.itcast.action");
那么所有的 Action 列表中包含了“cn.itcast”的 Activity 都将会匹配成功。
Android 预定义了一系列的 Action 分别表示特定的系统动作。这些 Action 通过常量
的方式定义在 android.content. Intent中,以“ACTION_”开头。我们可以在 Android
提供的文档中找到它们的详细说明。
URI 数据匹配
一个 Intent 可以通过 URI 携带外部数据给目标组件。在 <intent-filter >节点中,
通过 <data/>节点匹配外部数据。
mimeType 属性指定携带外部数据的数据类型,scheme 指定协议,host、port、path 指定
数据的位置、端口、和路径。如下:
<data android:mimeType="mimeType" android:scheme="scheme"
android:host="host" android:port="port" android:path="path"/>
电话的uri tel: 12345
http://www.baidu.com
自己定义的uri itcast://cn.itcast/person/10
如果在 Intent Filter 中指定了这些属性,那么只有所有的属性都匹配成功时 URI 数据匹配才会成功。
Category 类别匹配
<intent-filter >节点中可以为组件定义一个 Category 类别列表,当 Intent 中包含这个列表的
所有项目时 Category 类别匹配才会成功。
默认是DEFAULT
2.Intent传递数据时,可以传递哪些类型数据?
(1)一般的基本数据类型 Intent .putextra() intent.getextra();
(2)数据的uri, intent.setData() intent.getData();
3.说说Activity,Intent,Service是什么关系。
麦当劳和麦当娜的关系是什么关系?
这种问题,就讲下activity,讲一下service,说一下 通过intent去激活组件,传递数据.
说自己项目中有这样一个网络更新的功能,显示界面就用的activity, 后台有个service每隔半小时
都去访问下服务器获取更新的数据…
开启服务用的是intent来开启
4、隐式意图 通过指定一组动作或者数据 开启activity
5、显示意图 通过指定具体包名和类名 开启activity
总结
(1)显示意图更加安全一些
(2)开启自己应用的界面用显示意图(不需要配置意图过滤器)
(3)隐式意图一般开启系统应用(电话拨号器 短信的发送器等等)的界面
4.Intent 知识点总结
最新推荐文章于 2024-11-08 13:58:32 发布