首页 头条 财经 产业 跨境 时尚 物流 直播 优品 English
首页 / 数字经济 / 正文

针对不同具体的任务Intentfilter可分为多个filter

来源:
编辑:电经淘讯
时间:2023-08-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的节点里添加一个可选的标签。最高等级的组件会返回。 

头条聚焦更多
经济视界更多

“男人的衣柜”背后的周建平家族,财富

    在那个电视广告的黄金时代,凭借一句...[详细]

业绩持续亏损、涉嫌财务造假,力源科技

    作为一家上市3年多的水处理公司,力源科...[详细]

热点财经更多
  • CopyRight @ 2013-2024 Reserved CN电商经济网版权所有所涉内容免责声明查阅