首页 要闻 中国 经济 财经 品牌 点评 会展 综合 | 设为首页
中国品牌要闻网-传递资讯的价值打造品牌的影响
您现在的位置:首页/农林牧业/ 正文
针对不同具体的任务Intentfilter可分为多个filter
来源:
编辑:
时间:2022-07-22

      在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的节点里添加一个可选的标签。最高等级的组件会返回。 

免责声明:本文仅代表作者个人观点,与本网无关。其原创性以及文中陈述文字和内容未经本站证实, 对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺, 请读者仅作参考,并请自行核实相关内容。当事人(单位)如有异议,请参阅《删帖说明》办理。
中国品牌要闻网-传递资讯的价值打造品牌的影响
  • CopyRight@ 2005-2022 中国品牌要闻网
  • 工商注册号 430122000189097
  • ICP备案许证:渝ICP备2022012785号