标签:
BroadcastReceiver用于监听系统全局的广播消息,接受程序所发出的Broadcast Intent。
Broadcast被分为两种:Normal Broadcast(普通广播);Ordered Broadcast(有序广播);
Context提供了对应的方法发送广播这两种广播:
sendBroadcast():发送Normal Broadcast
sendOrderedBroadcast():发送Ordered Broadcast(对于Ordered Broadcast,系统会根据接受者声明的优先级别按顺序逐个执行接受者,优先接受到的Broadcast可以终止Broadcast,调用BroadcastReceiver的abortBroadcast()方法即可终止Broadcast)。
程序启动BroadcastReceiver需要两步:
第1步:创建需要启动的BroadcastReceiver的Intent
第2步:调用Context的sendBroadcast()或者sendOrderedBroadcast()方法来启动指定的BroadcastReceiver
注意:OnXxxListener只是程序级的监听器,BroadcastReceiver只是一个系统级的监听器且拥有自己的进程。
下面简单实现了如何发送Broadcast、使用BroadcastReceiver接受广播:
(1)在Activity中创建一个Intent,并使用该Intent对象对外发送一条广播
// 创建Intent对象
Intent intent = new Intent();
// 设置Intent的Action属性
intent.setAction("com.gc.action.CRAZY_BROADCAST");
intent.putExtra("msg", "Test Message");
// 发送广播
sendBroadcast(intent);
(2)该程序使用到的BroadcastReceiver代码如下:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("接受到的Intent的Action:" + intent.getAction());
System.out.println("消息内容是:" + intent.getStringExtra("msg")");
}
}
(3)配置上面的BroadcastReceiver应该监听的Action字符串的Intent
有两种方式进行配置:
第一种:在代码中配置:
IntentFilter filter = new IntentFilter("com.gc.action.CRAZY_BROADCAST");
MyReceiver receiver = new MyReceiver();
registerReceiver(receiver, filter);
第二种:在AndroidManifest.xml文件中配置
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="com.gc.action.CRAZY_BROADCAST" />
</intent-filter>
</receiver>
下面是常见Action常量,更多的请参考官方文档中关于Intent的说明(docs/reference/android/content/Intent.html)。
Action常量 | 对应字符串 | 简单说明 |
---|---|---|
ACTION_TIME_CHANGED | android.intent.action.TIME_SET | 系统时间被改变 |
ACTION_DATE_CHANGED | android.intent.action.DATE_CHANGED | 系统日期被改变 |
ACTION_BOOT_COMPLETED | android.intent.action.BOOT_COMPLETED | 系统启动完成 |
ACTION_SHUTDOWN | android.intent.action.ACTION_SHUTDOWN | 系统被关闭 |
ACTION_BATTERY_LOW | android.intent.action.BATTERY_LOW | 电池电量低 |
ACTION_POWER_CONNECTED | android.intent.action.ACTION_POWER_CONNECTED | 系统连接电源 |
ACTION_POWER_DISCONNECTED | android.intent.action.ACTION_POWER_DISCONNECTED | 系统与电源断开 |
标签:
原文地址:http://blog.csdn.net/smartbetter/article/details/51476009