Android开发_BroadcastReceiver组件
来源:互联网 发布:c 游戏编程贪吃蛇 编辑:程序博客网 时间:2024/06/05 18:03
BroadcastReceiver介绍
BroadcastReceiver 即“广播接收者”,常用来接收来自系统或应用的广播(Intent)。在Android系统中,有时候会发送一些广播,如系统启动完毕时,系统电量不足时等等;开发者可以通过接收这些不同的广播来进行一些相关的操作。通常一个广播 Intent 可以被订阅了此 Intent 的多个广播接收者(BroadcastReceiver)所接收。
BroadcastReceiver 自身并不实现图形用户界面,但是当它收到某个通知后, BroadcastReceiver 可以启动 Activity 作为响应,或者通过 NotificationMananger 提醒用户,或者启动 Service 等等。
public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("onReceive");}}
注册广播接收者(BroadcastReceiver)的方式
1、静态注册
// 在AndroidManifest.xml文件中<receiver android:name=".MyBroadcastReceiver"><intent-filter><action android:name="android.intent.action.MY_BROADCAST"/><category android:name="android.intent.category.DEFAULT" /></intent-filter></receiver>注意:这种方式的注册是常驻型的,也就是说当应用关闭后,如果有广播信息传来,MyBroadcastReceiver也会被系统调用而自动运行。
2、动态注册
动态注册需要在代码中动态的指定广播地址并注册,通常我们是在Activity或Service注册一个广播
// 注册receiverMyBroadcastReceiver receiver = new MyBroadcastReceiver();IntentFilter filter = new IntentFilter();filter.addAction("包名.intent.action.MY_BROADCAST"); registerReceiver(receiver, filter);// 取消注册unregisterReceiver(receiver);注意:当这个Activity或Service被销毁时如果没有解除注册,系统会报一个异常,提示我们是否忘记解除注册了。动态注册方式与静态注册相反,不是常驻型的,也就是说广播会跟随程序的生命周期。
广播的类型
1、普通广播(Normal Broadcast)
普通广播对于多个接收者来说是完全异步的,通常每个接收者都无需等待即可以接收到广播,接收者相互之间不会有影响。对于这种广播,接收者无法终止广播,即无法阻止其他接收者的接收动作。方法:sendBroadcast(intent)。
2、有序广播(Ordered Broadcast)
有序广播比较特殊,它每次只发送到优先级较高的接收者那里,然后由优先级高的接受者再传播到优先级低的接收者那里,优先级高的接收者有能力终止这个广播,可以通过abortBroadcast()方法截断广播使其他的接收者无法收到该广播。方法:sendOrderedBroadcast(intent, receiverPermission),该方法第2个参数决定该广播的级别,级别数值是在 -1000 到 1000 之间 , 值越大 , 发送的优先级越高。
3、无序广播
通过Context.sendStickyBroadcast(Intent myIntent)发送的,还有sendStickyOrderedBroadcast(intent, resultReceiver, scheduler, initialCode, initialData, initialExtras)方法,该方法具有有序广播的特性也有异步广播的特性;发送异步广播要: <uses-permission android:name="android.permission.BROADCAST_STICKY" />权限,接收并处理完Intent后,广播依然存在,直到你调用removeStickyBroadcast(intent)主动把它去掉,一般较少用。
- Android开发_BroadcastReceiver组件
- Android开发_BroadCastReceiver广播接收者
- android开发之短信监听拦截_BroadcastReceiver的使用
- android开发之短信监听拦截_BroadcastReceiver的使用
- 安卓中的四大组件_BroadcastReceiver
- 11_四大组件之一_BroadcastReceiver
- 步步为营_Android开发课[7]_BroadCastReceiver学习
- Android 第七天重置版_BroadCastReceiver
- 赵雅智_BroadcastReceiver
- Android开发四大组件
- Android开发四大组件
- android界面组件开发
- android桌面组件开发
- android 开发-----View组件
- Android开发_Activity组件
- Android--桌面组件开发
- Android开发,四大组件
- Android开发_Service组件
- mapreduce实现搜索引擎简单的倒排索引
- 参加2015(第四届)中国信息化和工业化融合发展高峰论坛 第一天(图文)
- mybaties错误解决Invalid bound statement (not found): com.yealink.example.dao.UserMapper.getUserByUserInf
- EditText 键盘是否要弹出
- HBase api优化设计
- Android开发_BroadcastReceiver组件
- myeclipse修改乱码(编码格式修改)
- oracle截取
- What is /proc/slabinfo?
- Linux下Mongodb安装及配置
- 文件目录管理与显示
- 远程服务器返回错误: (403) 已禁止。
- 第三章 字符串、向量和数组
- ElasticSearch安装及部署-windows篇