您的位置:首页 > 其它

四大组件之BroadcastReceiver

2016-12-14 22:59 155 查看

四大组件之广播接收者(BroadcastReceiver)

概念

在Android 中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast 进行过滤接受并响应的一类组件,
是Android 四大组件之一。
广播接收者(BroadcastReceiver)用于接收广播的,广播的发送是通过调用sendBroadcast(Intent)/sendOrderedBroadcast(Intent)来实现的。通常一个广播
可以被多个广播接收者所接收。
广播被分为两种不同的类型:“普通广播(Normal Broadcasts)”也叫无序广播和“有序广播(OrderedBroadcasts)”。


广播接受者的含义:

广播:广而告之(全局性 在整个手机里面都能显示)
接收者:被动的去接受数据


常用的广播接受者

在广播接受者里面开启Activity需要加一个falg
因为广播接受者里面不存在上下文所以需要flag告知Activity运行在自己的任务栈里面


1. SD卡状态

2. 开机启动

3. 外拨电话

4. 应用程序安装和卸载

5. 短信的广播接收者

adnroid.provi

Android4.0后需要加一个权限

广播是Android 四大组件之一,因此需要在AndroidManifest.xml 中进行注册。同时监听用户的拨打电话行为也属于侵犯用户隐私的行为,因此需要添加权限


在一个意图里面可以配置多个action在广播中需要进行判断执行

即使应用程序的进程不存在,当广播事件到来的时候,广播接受者的进程就会自动启动,响应广播事件

高版本4.0以后的 可以强行停止来终止广播接收者


广播电台

有序广播

广播消息是按照接收者声明的优先级别,被接收者依次接收广播,

需要在AndroidManifest.xml 中进行注册,优先级别声明在intent-filter 元素的android:priority 属性中,数越大优先级别越高,取值范围:-1000 到1000。

高优先级的可以拦截广播消息 .abortBroadcast()或者修改广播消息调用IntentFilter 对象的.setPriority()进行设置。

效率低

无序广播

没完全异步(就是不会被某个广播接收者终止)的,可以在同一时刻(逻辑上)被所有接收者接收到

效率高

特殊广播事件

在Android里面有一些产生非常频繁的广播事件,在清单文件里面配置是不会生效的,只能在代码中进行注册。

如电量变化、锁屏和解锁的操作(一般用于视频、地图)

roadCastReceiver 的注册方式有两种:

1、静态注册(就是通过AndroidManifest.xml 注册)

2、动态注册(就是通过代码注册)。

在本文中前面使用到的BroadCastReceiver

全部都使用的是静态注册方式,其实也可以使用动态注册,但是对于锁屏解屏和电量变化的监听只能通过动态注册

法。

- 服务只会停止一次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: