目录
广播类型的介绍
1.无序广播(收到的顺序不一定)
2.有序广播(有先后顺序,并且可被拦截)
广播接收者优先级:通过setPriority()方法设置优先级,例如这里我们这次使用的intentFilter.setPriority(?),其中数值越大优先级越高
-
实战——发送有序广播
- item(.xml)
- java代码
让我们先看一下总代码
基本可以看出来,一个广播接收者是五条代码,大家尽力记下来
而这里的intentFilter.setPriority(?)10>6>2,我们就能知道广播收到的顺序是2→3→1
现在让我们了解一下,如,第一行的one我们可以从上面那一张照片看见它关联的是MyReceiver,就是大家Java代码中的MyReceiver one=new MyReceiver();也就是实例化MyReceiver 对象
这里就会有同学问,那么intent、<intent-filter...>和intentfilter有什么最本质的区别吗?(如果没有那就当我没说
)
调用我们先区分显式和隐式(intent有两种:显式和隐式)
显式是应用与特定组件(知道他的名字),隐式内外组件都可以用
举个简单得栗子,有些女生和父母说自己找对象的意图
显示:我要找像哥哥我一样的男孩子(基本上告诉了父母,自己喜欢谁)
隐式:我要找“21岁”、“写博客”、“美少年”做男朋友,至于是谁就不知道了(●'◡'●),只要符合这三条要求的都可以
至于怎么样要不然下面有链接,要不然百度,要不然就等着吧(有空我在写)
intent到底是什么在Android中有四大组件,这些组件中有三个组件与Intent相关
Intent可以携带数据,传递给Activity/Service/BroadcastReceiver。
Intent能够包含的属性有Component、Action、Data、Category、Extras、Flags
现在我们关联一下intentfilter
Intent的Action、Category属性的值其实是普通的字符串,而Action是Intent要完成的抽象动作,Category是Action增加的附属信息,他们两个一般结合使用
Action:Intent.ACTION_VIEW他其实只能抽象的查看操作,具体操作谁他不知道,而这就取决于<intent-filter...>这里简单的说一下,<intent-filter...>是.xml中的,并且不是“硬编程”
看一下这个,我们知道跳转页面从哪到哪,而运用<intent-filter...>就变成
Intent intent=new Intent(); intent.setAction(MainActivity.CRAZYIT_ACTION); startActivity(intent);
这样我们就不知道它跳到那个页面了,它是通过<intent-filter...>中的<service.../>、<receive.../>来响应Intent的
细心的同学也会发现这里也有
最后是前不久(也就几个小时前)发表的自定义广播说的销毁
现在让我们看看三个广播接收者吧!
呵呵孪生三胞胎
现在让我们来看一下效果图
啊,怎么会和分析的效果不一样啊!!!
原来是发错图了
惊不惊喜,意不意外
接下来我们来补充扩展一下
添加拦截广播
有的同学说如果优先级一样会不会同时接受,答案是:不会,因为系统会更加你定义代码的顺序来判断,也就是说接受顺序的因素1.优先级2.你的代码实现
聪明的孩子看到这个就会知道,我们已经开始让系统拦截广播了
实现代码如下:
那现在让我们在它拦截之后再次接受一个三号广播接收者的吧
对比之前我们多了最后两条代码
这是我在网上找的,一定要这样写,写全了不是只写空里前三个就可以了
这就是最后的效果
如果在操作过程中有什么问题可以私聊我,那么幸会,有缘再见