android 中自定义广播的使用broardcast
2015-07-28 22:57
567 查看
在android系统中,有很多系统级的广播,如网络连接变化、锁屏、充电状态、日期时间变更等等,但有时候只用系统的广播很难满足我们的要求,所以需要用到自定义广播。 若要实现自定义广播,大概分为三个步骤: 1.注册广播 2.发送广播 3.接收广播 而注册广播也有两种方式,一种为动态注册,另一种为静态注册,静态注册需要在manifest文件中去生命广播的接收者,而动态注册则需要代码中去生命广播接收者 首先看静态注册:我们要new出一个类继承自BroadcastReceiver,并实现其onReceive方法:
public class TestReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context , "receiver" , Toast.LENGTH_SHORT).show(); } }
然后在AndroidManifest文件的<application>标签中去静态的注册该广播接收者:
<receiver android:name=".TestReceiver"><intent-filter><action android:name="test"/></intent-filter></receiver>注意需要在<intent-filter>标签中生命该receiver的action,且action的name不要与系统的action重名,当我们发出广播时,会根据action去寻找响应该广播的receiver。
接下来,我们在某个activity中发出广播:
private void sendBroadcast(){Intent intent = new Intent();intent.setAction("test");sendBroadcast(intent);}
这样,就完成了静态注册广播并发送和接收的整个过程。
接下来是动态注册,其实跟静态注册是类似的,只不过静态注册的情况下,不管应用有没有用到这个广播,该广播都会注册,而动态注册只会在需要用到的时候去注册。
动态注册广播的代码:
private void registerReceiver(){mReceiver = new TestReceiver();IntentFilter filter = new IntentFilter();filter.addAction("test");registerReceiver(mReceiver , filter);}
发出广播的代码:
private void sendBroadcast(){Intent intent = new Intent();intent.setAction("test");sendBroadcast(intent);}
另:如该广播已经没有地方用到,可以将其解绑,代码如下:
private void unRegisterReceiver(){unregisterReceiver(mReceiver);}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories