Android四大组件简述之BroadcastReceiver
来源:互联网 发布:windows和mac内核区别 编辑:程序博客网 时间:2024/06/05 18:10
BroadcastReceiver
BroadcastReceiver是Android四大组件之一,它被用来接收sendBroadcast()的所发送的intents。BroadcastReceiver详细介绍可以参考官网文档:http://developer.android.com/reference/android/content/BroadcastReceiver.html
BroadcastReceiver分类
android中主要分为两种广播:
普通广播(sent with Context.sendBroadcast):所有的接受者接受到广播的顺序是无序的,通常在一个时间。这样效率更高,但是在传播过程中接受者不能终止掉广播。
有序广播(sent with Context.sendOrderedBroadcast) :有序广播可以发送给指定的广播接受者。每个广播接受者在接受到有序广播之后,可以给下一个接受者传递一个结果,也可以直接终止掉广播的传送,那样之后的广播接受者就接受不到了。广播接受者的接受顺序可以通过 android:priority 属性来控制,相同优先级的接受者执行的顺序是任意的。
注意:虽然Intent被用来发送和接受广播,但是在广播机制中,避免通过Context.startActivity() 开启Activity。因为开启Activity是一个前台的操作来与用户进行交互,发送广播是一个后台的操作,用户一般察觉不到它的发生。
注册BroadcastReceiver
如其他组件一样,BroadcastReceiver是要注册的。你可以通过Context.registerReceiver() 动态注册广播或者在进行AndroidManifest.xml 通过<receiver>节点静态注册
1.静态注册:
<receiver android:name=".StaticBroadcastReceiver"> <intent-filter > <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> </receiver>
2.动态注册
动态注册,顾名思义,在需要的时候就注册这个广播,不需要的时候就注销掉。动态注册不需要在AndroidMainifest里面注册。
receiver = new StaticBroadcastReceiver();IntentFilter filter = new IntentFilter();filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");context.registerReceiver(receiver, filter);
注意动态广播需要反注册
this.unregisterReceiver(receiver);
BroadcastReceiver生命周期
BroadcastReceiver生命周期的生命周期比较简单,不会像前面说到的Activity和Service那么复杂。
一个BroadcastReceiver 对象只有在被调用onReceive(Context, Intent)的才有效的,当从该函数返回后,该对象就无效的了,结束生命周期。
因此从这个特征可以看出,在所调用的onReceive(Context, Intent)函数里,不能有长时间的操作,如果需要,就启动一个Service来处理。具体时间也不一定,大概10秒左右,就会导致程序卡死。
- Android四大组件简述之BroadcastReceiver
- Android四大组件简述之BroadcastReceiver
- android四大组件之BroadCastReceiver
- android 四大组件之 broadcastreceiver
- android四大组件之BroadcastReceiver
- Android四大组件之BroadcastReceiver
- Android四大组件之BroadcastReceiver
- Android四大组件之BroadcastReceiver
- Android四大组件之BroadcastReceiver
- Android四大组件之BroadcastReceiver
- android四大组件之BroadcastReceiver
- Android四大组件之BroadcastReceiver
- Android 四大组件之 BroadcastReceiver
- Android四大组件之~~BroadcastReceiver
- Android 四大组件之BroadcastReceiver
- Android四大组件之BroadcastReceiver
- Android四大组件之BroadcastReceiver
- android四大组件之BroadcastReceiver
- UML九种图之交互图
- STL 之 list
- D - The Suspects
- COM组件创建过程
- ServletContext
- Android四大组件简述之BroadcastReceiver
- 头文件互相包含的问题
- 5款Windows 界面原型设计工具
- 36. Valid Sudoku
- 红黑树的插入删除-红黑树动态顺序统计
- bombing:cocos2d-x之CCDirector类2
- ASP.NET连接SQL Server数据库
- javaSE-面向对象-final关键字
- POJ 2762 Going from u to v or from v to u? Tarjan缩点+判断链