请问和某个intent匹配的程序列表的排序先后有什么依据?能改变吗?
澳门银河官网
澳门银河官网
当前位置 : 澳门银河官网 > 澳门银河官网开户

请问和某个intent匹配的程序列表的排序先后有什么依据?能改变吗?

请问和某个intent匹配的程序列表的排序先后有什么依据?能改变吗?

当组件管理服务,在收到请求组件的Intent设为intentA后,先查看intentA对象是包含了Component信息,如果有,无须匹配。
如果没有,则会从应用管理服务中获取所有组件的Intent Filter信息,并与intentA目标比较。

比较的算法如下:

1比较Action,如果intentA未包含Action,或者系统所有的Inent Filter没有匹配的Action,则转到2;

2比较Data和Type
2-1如果intentA中无Data或者Type项,那么Intent Filter中也不能有,否则匹配失败;
2-2如果intentA包含Type,则必须Intent Filter的Type与之对应可使用通配符比较,否则比配失败;
2-3如果intentA包含Data,则会将Data的URI信息拆分成Scheme和Authority等部分,逐一与Intent Filter对象中的对应部分进行比较,两者必须完全相等,方可匹配成功。
如果1和2都匹配成功,则进入3

3匹配Category,如果intentA无Category,则成功;否则,必须要求intentA中包含的所有Category都出现在相应Intent Filter的Category中,不然则匹配失败,即仅当intntA对象的Category项集合是Intent Filter对象Catetory项集合子集时,匹配才能成功。

详情请参考《Android开发精要》第四章第二节。

广告位

澳门银河官网