Android组件之BroadcastReceiver
2016-11-01 10:51
176 查看
1.什么是BroadcastReceiver?BroadcastReceiver是安卓的四大组件之一,它的功能是接收系统或应用发送的广播事件。例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作;当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度,等等。广播的创建需要继承android.content.BroadcastReceiver,并实现其onReceive方法代码如下:public class MyReceiver extends BroadcastReceiver {private static final String TAG = "MyReceiver";@Overridepublic void onReceive(Context context, Intent intent) {String msg = intent.getStringExtra("msg");Log.i(TAG, msg);}}在onReceiver()方法中我们可以获取随广播而来Intent数据,就像无线电一样包含许多信息。2.如何注册和使用BroadcastReceiver?(1)在manifest中注册广播接受者为静态注册,方式如下:<receiver android:name=".MyReceiver"> <intent-filter> <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>配置了以上信息之后,只要是android.intent.action.MY_BROADCAST这个地址的广播,MyReceiver都能够接收的到。注意,这种方式的注册是常驻型的,也就是说当应用关闭后,如果有广播信息传来,MyReceiver也会被系统调用而自动运行。(2)在代码中注册为动态注册
MyReceiver receiver=new MyReceiver(); IntentFilter intentFilter=new IntentFilter(); intentFilter.addAction("android.intent.action.MY_PACKAGE_REPLACED"); registerReceiver(receiver,intentFilter);
在实际应用中,我们在Activity或Service中注册了一个BroadcastReceiver,当这个Activity或Service被销毁时如果没有解除注册,系统会报一个异常,提示我们是否忘记解除注册了。所以,记得在特定的地方执行解除注册操作:
@Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); }3.广播接收者的生命周期。
广播接收者的生命周期非常的短,在广播接收的时候创建,在onReceiver()方法之后销毁。
不能做耗时行的工作,否则或报ANR
最好不要在广播中创建子线程,因为广播销毁后线程变成了空进程,容易呗系统杀掉
4.广播的种类。
广播分为两种:有序广播和无序广播;
有序广播:按照被接收者的优先级顺序,在被接收者中依次传播。比如有3个广播接受者A、B、C,优先级是A>B>C,这个消息依次传给A再B后C,每个接受者都有权终止这个广播,如果被终止了后面的接受者就接收不到这个广播了。此外A接收到广播后可以对对象进行操作,当广播传给B时,B可以从结果对象中获取A存入的数据。
无序广播:完全异步,逻辑上可以被任何广播接受者接收,优点效率高,缺点是不能将处理结果传递给下一个接受者,不能终止广播
5.广播的发送
有序广播:
Intent intent = new Intent(); intent.setAction("..."); Context.sendOrderedBroadcast(intent,null);
无序广播:Intent intent = new Intent();intent.setAction("...");Context.sendBroadcast(intent);
相关文章推荐
- android 62Android程序开发入门——组件生命周期之Broadcast receiver
- Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)
- Android四大组件之BroadcastReceiver(2)
- Android核心组件之BroadCastReceiver
- Android BroadcastReceiver组件
- Android组件通讯之BroadcastReceiver应用闹钟服务
- android 应用五大核心组件之四(BroadcastReceiver)
- Android四大组件简述之BroadcastReceiver
- 15_Android四大组件:Activity 、Service、Broadcast receiver 、Content provider
- Android四大组件之BroadcastReceiver
- Android学习笔记之Android组件之BroadcastReceiver(Android广播机制)
- Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。
- Android的四大组件之Broadcast Receiver
- android broadcastReceiver组件
- Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。然后重点提到Acti
- Android四大组件之BroadcastReceiver
- 【Android基础入门〖5〗】四大组件之BroadcastReceiver
- Android四大组件之一:BroadCastReceiver(广播接收者)
- Android组件:BroadcastReceiver实例详解
- Android之BroadcastReceiver组件