博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android intent的理解
阅读量:2383 次
发布时间:2019-05-10

本文共 1036 字,大约阅读时间需要 3 分钟。

Intent主要是解决Android应用的各项组件之间的通讯。

Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。

在应用中,我们可以以两种形式来使用Intent:
直接Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。
间接Intent:没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。
对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。
Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:
如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;如果Intent没有提供type,系统将从data中得到数据类型。和action一样,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。
如果Intent中的数据不是content: 类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme (比如 http: 或者mailto: ) 进行匹配。同上,Intent 的scheme必须出现在目标组件的scheme列表中。
如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。比如Intent中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。

转载地址:http://qauab.baihongyu.com/

你可能感兴趣的文章
你可能不知道Windows系统下有一个UNIX子系统
查看>>
有关R6034错误的思考
查看>>
一部描写真实人性的小说
查看>>
你会做年度计划吗?
查看>>
VS 2005中毒后编译出现的错误及其解决过程
查看>>
周国平:教育的七条箴言
查看>>
应用程序初始化失败问题的解决
查看>>
开启Windows 7远程桌面功能的做法
查看>>
有关error PRJ0003错误的思考
查看>>
韩少功:怎么赚钱
查看>>
如何煮鸡粥
查看>>
实现自定义对话框程序快捷键的两种方法
查看>>
如何对抗微软霸权,google给我们上了一课
查看>>
未能将基于用户的Visual C++项目设置保存到user文件错误的解决
查看>>
获取windows版本信息的做法
查看>>
打开文件对话框在xp和win7上的实现文件任意多选
查看>>
略谈如何创建一个监控线程
查看>>
苯事两则
查看>>
批处理实现添加java环境变量
查看>>
关于sizeof运算符的一些理解
查看>>