首页焦点IT通讯测评 智机互联网数码电商安全 IPhone客户端   安卓客户端
首页 / 智慧手机 / 正文

Intentfilter每一个组件都能接收一组intent的能力

来源:IT手机新世界
作者:
时间:2021-05-27

在Android中有四大组件,这些组件中有三个组件与Intent相关,可见Intent在Android整个生态中的地位高度。Intent是信息的载体,用它可以去请求组件做相应的操作,但是相对于这个功能,Intent本身的结构更值得我们去研究。
       为了能支持隐式intent,activity、service和broadcast receiver会包含1到多个intent filter。每个intent filter描述组件的可接收一组intent的能力。在intent filter中,说明了可接受的类型,以及不想要的intent。隐式的intent要想投递到一个组件,只需通过组件的一个filter即可。组件把filter分成多个,是为了针对具体不同的任务。


       在sample中的Note pad示例中,NoteEditor activity有两个filter,一个用于启动并打开指定的note,另一个是为了打开新的空的note。一个intent filter是一个IntentFilter类的实例。但是,android系统必须在组件未启动的情况下就知道它的能力,因此intent filter一般不会在java代码中设置,而是在应用的manifest文件中作为<intent-filter>元素的方式声明。一个例外是,为broadcast receiver注册动态的filter,可以调用Context.registerReceiver()方法,通过直接实例化IntentFilter对象创建。filter有三个平等的部分:action、data和category。隐式intent将测试这三个部分。一个intent要想投递到一个组件,那么这三个测试都要通过才行。当然如果组件有多个intent filter,可能一个intent没有通过,但是通过了另外的一个,这样也可以把intent投递到组件。
       需要注意的是:如果一个Intent 可以通过多个activity或者filter的filter,那么用户将会被询问需要激活哪个组件。 如果一个都没有的话,将会抛出异常。可以在Intent Filter的节点里添加一个可选的标签。最高等级的组件会返回。 

0
(查看全部0条评论) 请遵守国家新闻相关法规,文明上网发表评论!
    
验证码:  
IT手机新世界
更新时间:2020-12-25
点评(1)
IT手机新世界
更新时间:2020-11-25
点评(1)
要闻推荐更多
热搜排行更多
  • 咨询: 资讯内容纠错答疑在线联系方式
  • Email:27676482@qq.com
  • CopyRight@2015-2020 IT手机新世界 All Right Reserved
  • 工商营业注册:110101014752254
  • 增值电信业务经营许可证:京备A2-2009413