Android的Service与BroadcastReceiver之四 BroadcastReceiver 简介、开发与配置;发送广播、有序广播;使用BroadcastReceiver接受系统广播
2015-01-31 17:51
741 查看
BroadcastReceiver 简介、开发与配置
本质上就是一种全局监听器,用于监听全局的广播消息。它可以非常方便地实现系统中不同组件之间的通信
BroadcastReceiver用于接收程序锁发生的Broadcast Intent,启动BroadcastReceiver只需要两步
创建需要启动的BroadcastReceiver的Intent
调用Context的sendBroadcast()或sendOrderedBroadcast()方法来启动指定的BroadcastReceiver
BroadcastReceiver本质上只是一个系统级的监听器——它专门负责监听各程序所发出的Broadcast,它并没有完整的生命周期
实现BroadcastReceiver只要重写BroadcastReceiver的onReceiver(Context context, Intent intent)方法即可
一旦实现了BroadcastReceiver之后,接着就应该指定能匹配的Intent:
代码--使用BR的Context的registerReceiver(BroadcastReceiver receiver, IntentFilter filter)指定,示例:
IntentFilter filter = new IntentFilter(“android.provider.Telephony.SMS_RECEIVED”);
IncomingSMSReceiver receiver = new IncomingSMSReceiver();
registerReceiver(receiver, filter);
在AndroidManifest.xml文件中配置
<receiver android:name=“.IncomingSMSReceiver">
<intent-filter>
<action android:name=“android.provider.Telephony.SMS_RECEIVED”/>
</intent-filter>
</receiver>
每次系统Broadcast事件发生之后,系统就会创建对应的BroadcastReceiver实例,并自动触发它的onReceiver()方法,onReceiver方法执行完后,BroadcastReceiver的实例就会被销毁
(如果onReceiver方法不能在10秒内执行完成,Android会认为该程序无响应,引发ANR;若需要执行耗时操作,则应通过Intent启动Service来完成)
在程序中发送广播十分简单,只要调用Context的sendBroadcast(Intent intent) 方法即可;
有序广播
Normal Broadcast:同一时刻可以被所有接受者接收到,消息传递效率较高。缺点是不能将处理结果传递给下一个接收者,并且无法终止Broadcast Intent的传播
Ordered Broadcast:按接收者声明的优先级一次接受Broadcast。优先级声明在<intent-filter>的Android:priority中,数越大,优先级越高;接收者可以终止Broadcast Intent传播;数据可以传递给下一个接收者
Context提供了两个方法用于发送广播
sendBroadcast()
sendOrderedBroadcast()
接受系统广播消息
常见广播Action常量
本质上就是一种全局监听器,用于监听全局的广播消息。它可以非常方便地实现系统中不同组件之间的通信
BroadcastReceiver用于接收程序锁发生的Broadcast Intent,启动BroadcastReceiver只需要两步
创建需要启动的BroadcastReceiver的Intent
调用Context的sendBroadcast()或sendOrderedBroadcast()方法来启动指定的BroadcastReceiver
BroadcastReceiver本质上只是一个系统级的监听器——它专门负责监听各程序所发出的Broadcast,它并没有完整的生命周期
实现BroadcastReceiver只要重写BroadcastReceiver的onReceiver(Context context, Intent intent)方法即可
一旦实现了BroadcastReceiver之后,接着就应该指定能匹配的Intent:
代码--使用BR的Context的registerReceiver(BroadcastReceiver receiver, IntentFilter filter)指定,示例:
IntentFilter filter = new IntentFilter(“android.provider.Telephony.SMS_RECEIVED”);
IncomingSMSReceiver receiver = new IncomingSMSReceiver();
registerReceiver(receiver, filter);
在AndroidManifest.xml文件中配置
<receiver android:name=“.IncomingSMSReceiver">
<intent-filter>
<action android:name=“android.provider.Telephony.SMS_RECEIVED”/>
</intent-filter>
</receiver>
每次系统Broadcast事件发生之后,系统就会创建对应的BroadcastReceiver实例,并自动触发它的onReceiver()方法,onReceiver方法执行完后,BroadcastReceiver的实例就会被销毁
(如果onReceiver方法不能在10秒内执行完成,Android会认为该程序无响应,引发ANR;若需要执行耗时操作,则应通过Intent启动Service来完成)
在程序中发送广播十分简单,只要调用Context的sendBroadcast(Intent intent) 方法即可;
有序广播
Normal Broadcast:同一时刻可以被所有接受者接收到,消息传递效率较高。缺点是不能将处理结果传递给下一个接收者,并且无法终止Broadcast Intent的传播
Ordered Broadcast:按接收者声明的优先级一次接受Broadcast。优先级声明在<intent-filter>的Android:priority中,数越大,优先级越高;接收者可以终止Broadcast Intent传播;数据可以传递给下一个接收者
Context提供了两个方法用于发送广播
sendBroadcast()
sendOrderedBroadcast()
接受系统广播消息
常见广播Action常量
相关文章推荐
- android-BroadcastReceiver 发送有序广播
- Android的Service与BroadcastReceiver之一 Service简介、创建、配置、启动、停止与其生命周期
- android-BroadcastReceiver 发送有序广播
- android-BroadcastReceiver 发送有序广播
- Android BroadcastReceiver 发送有序广播
- android-BroadcastReceiver 发送有序广播
- android-BroadcastReceiver 发送有序广播
- Android 四大组件之BroadcastReceiver(发送有序无序广播)
- Android BroadcastReceiver实例Demo(有序广播的发送)
- Android中Intent详解(二)之使用Intent广播事件及Broadcast Receiver简介
- android开发 - BroadcastReceiver 广播接收者
- Android开发学习笔记(3):BroadcastReceiver简介和注册方式
- 初学Android,BroadcastReceiver之发送接收广播
- 初学Android,BroadcastReceiver之有序广播(七十一)
- android在广播接收器BroadcastReceiver里面再进行发送广播,造成当前广播接收器不断循环执行问题
- android—广播接收者BroadcastReceiver的应用开发范例
- Android 启动Service服务和发送Broadcast广播的常用方法
- Android开发22――广播接收者BroadcastReceiver的原理和注册
- Android开发学习笔记:BroadcastReceiver简介和注册方式
- Android中广播接收者BroadcastReceiver的理解与基本使用