Android BroadcastReceiver广播接收器详解
来源:互联网 发布:机器人小车编程 编辑:程序博客网 时间:2024/04/27 22:51
android中的广播是一个很神奇的东西,如果使用得当的话,能大大提高我们的开发效率,最近的学习中正好接触到了这个知识点,我要把它纪录下来,方便以后复习和查阅
BroadcastReceiver是Andriod四大组件之一,在使用的过程中,我们需要自定义一个类来继承BroadcastReceiver,并实现onReceive()方法,该方法就是广播接收器需要处理的业务,不可以做耗时任务,时间超过10秒,就会出现ANR(Application Not Responding),也不能开启子线程来执行任务,因为有可能子线程还没执行完,该BroadcastReceiver就被销毁了,子线程也就被销毁了,最合适的做法应该是将耗时任务放到Service中,今天不讲Service,以免知识点混乱。
比如我定义一个MyBroadcastReceiver类继承自BroadcastReceiver类,代码如下:
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "接收到广播了", Toast.LENGTH_SHORT).show(); }}
那么我们应该如何使用这个类呢?
我们需要先注册一下这个MyBroadcastReceiver类,然后发送一个广播
注册分为静态注册和动态注册,静态注册就是在Manifest文件中添加一个Receiver节点,代码如下:
<receiver android:name="MyBroadcastReceiver" > <intent-filter> <action android:name="MyBroadcastReceiver" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>
action的name属性随便写,自己能看懂就行了,相当于给这个广播接收器取了一个别名,因为android系统还有很多自带的广播接收器,所以必须要取一个别名来标志一下,以示区别。category的name属性暂时就这么写,我也不知道为啥,以后再说
好了,以上就是静态注册,动态注册就是在代码中注册,代码如下:
IntentFilter filter = new IntentFilter(); filter.addAction("MyBroadcastReceiver"); filter.addCategory("android.intent.category.DEFAULT"); registerReceiver(new MyBroadcastReceiver(), filter);
内容基本上跟静态注册差不多,设置了一个action属性和category属性。值得注意的是,动态注册需要在程序关闭之前调用unRegisterReceiver()来解除绑定,否则程序会出现很多问题
静态注册和动态注册的区别:当程序运行的时候,静态注册和动态注册都能响应广播,当程序退出的时候,动态注册也就失效了,但是静态注册依旧能响应广播。举个例子:手机上的闹铃,我们只要设定好时间,然后退出闹铃程序,到了规定的时间,闹铃就会响,但是我们确确实实退出闹铃程序了呀,其实用的就是静态注册。也不能说静态注册优于动态注册,各取所需吧,主要还是看项目需求
注册好广播接收器之后,就可以发送广播了,代码如下:
Intent intent = new Intent(); intent.setAction("MyBroadcastReceiver"); intent.putExtra("msg", "我是广播发送者"); sendBroadcast(intent);
action字符串必须和注册时候的action一摸一样,否则是接收不到的
还可以在intent中附带一些信息,这个也是可以有的,看需求吧
然后通过sendBroadcast发送出去就万事大吉了
有序广播和无序广播
有序广播:按照优先级,优先级高的先接收到广播,优先级低的后接收到广播,优先级高的有权力终止广播,每次只能有一个人处理广播
无序广播:大家同时处理一个广播,不分先后
关于这个,以后再说吧,长老准备休息休息了
- Android BroadcastReceiver广播接收器详解
- BroadCastReceiver android 广播接收器
- Android 广播接收器BroadcastReceiver
- android-----BroadcastReceiver广播接收器
- Android-BroadcastReceiver广播接收器
- Android 广播接收器(BroadcastReceiver)
- android BroadcastReceiver(广播接收器)【转载】
- Android-(广播接收器)BroadcastReceiver-2
- Android 广播接收器BroadcastReceiver(一)
- Android 广播接收器BroadcastReceiver(二)
- Android 广播接收器BroadcastReceiver(三)
- Android 广播接收器BroadcastReceiver(四)
- Android 广播接收器BroadcastReceiver(五)
- Android 广播接收器BroadcastReceiver(六)
- Android广播接收器(BroadcastReceiver)
- Android之BroadcastReceiver(Android中的广播接收器)
- Android基础知识--10.Android广播接收器BroadcastReceiver
- Android基础-broadcastreceiver(广播接收器)
- 矩阵分析与应用学习笔记1
- Android 从服务器获取信息 并显示 (包含服务器端代码)
- 使用Xutils框架稳定下载大文件(以下一首歌为例,可以自定义进度条)
- struts2中的ModelDriven运行机制
- 大话设计模式java版--备忘录模式-游戏保存进度例子
- Android BroadcastReceiver广播接收器详解
- Go打印函数printf格式简介
- Bring Your Android App to Chromebooks
- string.format()函数的用法
- LeetCode经典题目笔记(一)
- java学习记录
- Android 设置键盘弹出后顶起布局
- 图的遍历、最小生成树以及单源最短路径
- textField控制字数(字符16个)