四大组件之BroadcastReceiver

来源:互联网 发布:python 2.7.11.tgz 编辑:程序博客网 时间:2024/05/01 07:08

四大组件之广播接收者(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
全部都使用的是静态注册方式,其实也可以使用动态注册,但是对于锁屏解屏和电量变化的监听只能通过动态注册
法。
- 服务只会停止一次

0 0
原创粉丝点击