码迷,mamicode.com
首页 > 移动开发 > 详细

Android开发实践 BroadcastReceiver

时间:2016-05-23 15:07:01      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

BroadcastReceiver用于监听系统全局的广播消息,接受程序所发出的Broadcast Intent。

1.Broadcast和BroadcastReceiver

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只是一个系统级的监听器且拥有自己的进程。

2.发送Broadcast、并使用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>

3.接受系统广播消息

下面是常见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 系统与电源断开

Android开发实践 BroadcastReceiver

标签:

原文地址:http://blog.csdn.net/smartbetter/article/details/51476009

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!