一步一步的学习BroadCastReceiver
2014-08-06 09:55
211 查看
1.什么是BroadcastReceiver
BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作;当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度,等等。Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现在只需等待广播告知自己就可以了,大大减少了开发的工作量和开发周期。而作为应用开发者,就需要数练掌握Android系统提供的一个开发利器,那就是BroadcastReceiver。下面我们就对BroadcastReceiver逐一地分析和演练,了解和掌握它的各种功能和用法。
2.如何接受广播
知道什么是BroadcastReceiver后,下面我们通过一个小例子展示如何接受广播。首先创建一个广播接收器类,该类必须从BroadcastReceiver或其子类继承,在BroadcastReceiver.onReceiveContext context, Intent intent)方法中编写处理广播的代码。
package com.homer.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyReceiver extends BroadcastReceiver { //1.继承BroadcastReceiver
private static final String TAG = "MyReceiver";
@Override
public void onReceive(Context context, Intent intent) { //2.复写onReceive方法
String msg = intent.getStringExtra("msg");
Log.i(TAG, msg);
}
} 其次,我们要注册广播,注册广播有两种方式:静态注册和动态注册。
静态注册
静态注册是在AndroidManifest.xml文件中配置的,我们就来为MyReceiver注册一个广播地址:
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="android.intent.action.MY_BROADCAST" /> //通过action匹配
</intent-filter>
</receiver> 配置了以上信息之后,只要是android.intent.action.MY_BROADCAST这个地址的广播,MyReceiver都能够接收的到。注意,这种方式的注册是常驻型的,也就是说当应用关闭后,如果有广播信息传来,MyReceiver也会被系统调用而自动运行。
动态注册
动态注册需要在代码中动态的指定广播地址并注册,通常我们是在Activity或Service注册一个广播,下面我们就来看一下注册的代码:
[java] view
plaincopy
MyReceiver receiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.MY_BROADCAST");
registerReceiver(receiver, filter);
注意,registerReceiver是android.content.ContextWrapper类中的方法,Activity和Service都继承了ContextWrapper,所以可以直接调用。在实际应用中,我们在Activity或Service中注册了一个BroadcastReceiver,当这个Activity或Service被销毁时如果没有解除注册,系统会报一个异常,提示我们是否忘记解除注册了。所以,记得在特定的地方执行解除注册操作:
[java] view
plaincopy
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
执行这样行代码就可以解决问题了。注意,这种注册方式与静态注册相反,不是常驻型的,也就是说广播会跟随程序的生命周期。
3.发送广播
本文在activity中通过点击按钮来发送广播,通过sendBroadcast()方法来发送广播代码如下:点击sendBroadcast按钮,控制台打印如下:
看到这样的打印信息,表明我们的广播已经发出去了,并且被MyReceiver准确无误的接收到了
今天先写到这里吧,这只是BroadcastReceiver简单的一个入门,下一个博客会写一个基本的例子来联系,BroadcastReceiver
相关文章推荐
- 一步一步学习ObjectDataSource
- 一步一步学习ObjectDataSource(1)
- 一步一步学习Vim 全图解释 (强烈推荐)
- 一步一步学习OC2007(三)--定制菜单命令
- 一步一步学习ObjectDataSource 二
- 一步一步学习OC2007(四)--扩展帮助菜单
- 一步一步学习Vim 全图解释 (强烈推荐)
- vigor:一步一步学习IP/MAC绑定
- 一步一步学习OCS2007(二)--如何定制web 标签页?
- 一步一步学习ObjectDataSource--(2)
- 刻录光盘学习笔记,一步一步地来
- 你的环境你做主,一步一步学习制作VS2005 Addins(1)-添加工具栏按钮
- 一步一步学习Vim 全图解释
- 一步一步学习ObjectDataSource控件--自定义分页排序
- 一步一步学习ObjectDataSource
- [BTS2004]一步一步学习BizTalk2004 Sql Server Adapter
- [BTS2004]一步一步学习BizTalk2004 CBR(content-based routing)
- [转]一步一步学习STL标准模板库
- 一步一步学习ObjectDataSource 一
- 一步一步学习ObjectDataSource控件--自定义分页排序(三)