四大组件--BroadcastReceiver

来源:互联网 发布:js中大于等于怎么写 编辑:程序博客网 时间:2024/05/29 07:52

简介:

用于监听全局的广播,相当于一个全局的监听器,接收APP或系统应用发出的Broadcast Intent,可以用系统中不同组件之间的通信(例如Service与启动它的APP)。BroadcastReceiver拥有自己的进程,只有存在与之匹配的Intent被广播出来,便会激活(即使所在程序退出)。

使用:

BroadcastReceiver:
重写onReceive(Context context, Intent intent)方法;
注:如果在10s内无法完成任务则会造成ANR异常。所以不要在onReceive()中进行耗时操作,或通过Intent启动一个Service来完成操作。

指定该BroadcastReceiver所能匹配的Intent:
1.调用所在Context的registerRecevier(BroadcastReceiver receiver, IntentFilter filter)方法,通过IntentFilter的构造方法传入广播信息。
2.在Manifest.xml文件中的< receiver>中的< Intent-filter>中的< action>的name属性进行配置。

发送广播:
调用Context的sendBroadcast(Intent intent)方法,并通过intent.setAction(“广播信息”)的方式指定所要接收的BroadcastReceiver。

有序广播(OrderedBroadcast):
相比于普通广播,有序广播能按照事先声明的优先级(通过< Intent-filter>中的priority属性)按顺序地调用。好处在于可以拦截广播的传递(通过调用BroadcastReceiver的abortBroadcast()方法终止广播),并且上一个广播可以通过BroadcastReceiver的setResultExtras(Bundle bundle)方法将自己的信息传给下一个接受者(通过 Bundle bundle = getResultExtras(true)的方式获得)其中Bundle 为一个数据包的角色。

接收系统广播:
以下为安卓系统的广播常量:来自网络
这里写图片描述

原创粉丝点击