Android核心技术之(8)---四大应用组件之BroadcastReceiver

来源:互联网 发布:openwrt 软件 编辑:程序博客网 时间:2024/06/06 06:29

1.理论概述

1.1.广播事件处理属于系统级的事件处理(一般事件处理是属于View级的事件处理)

1.2.一个应用可以在发生特定事件时发送Broadcast,系统中任何应用只要注册了对应Receiver就会接收到此Broadcast

1.3.一个应用如果对某个广播感兴趣, 就可以注册对应的Receiver来接收广播

1.4.广播事件机制是应用程序(进程间)之间通信的一种手段

2.相关API
Context
•sendBroadcast(Intent intent) : 发送一般广播
•sendOrderedBroadcast(Intent intent) : 发送有序广播
•registerReceiver(receiver, intentFilter) : 注册广播接收器
•unRegisterReceiver(receiver) : 解注册广播接收器

BroadcastReceiver
•onReceive(Context context, Intent intent) : 接收到广播的回调
•abortBroadcast() : 中断广播的继续传播
•boolean isOrderedBroadcast() : 判断是否是有序广播

3.常见系统广播

收到短信广播: android.provider.Telephony.SMS_RECEIVED

开机完成广播: Intent.ACTION_BOOT_COMPLETED

•应用被卸载广播 : Intent.ACTION_PACKAGE_REMOVED

•手机锁屏 :Intent.ACTION_SCREEN_OFF

•手机开屏 :Intent.ACTION_SCREEN_ON

4.编写广播接收器类

•广播接收器类都必须继承于BroadcastReceiver类

publicclass MyBroadcastReceiver extends BroadcastReceiver{

   publicvoid onReceive(Context context, Intent intent){

  //处理广播

  }

}


5.注册广播接收器类

•方式一: 配置文件注册(静态注册)

       <receiver android:name="com.atguigu.t6_br.MyBroadcastReceiver">

            <!--priority指定当前receiver的优先级,值是0-1000,越大越好  -->

            <intent-filter android:priority="500">

                <actionandroid:name="com.atguigu.t6_br.mybroadcastreceiver"/>

            </intent-filter>

        </receiver>

•方式二: 硬编码注册(动态注册)

MyBroadcastReceiver2receiver2 = new MyBroadcastReceiver2();

IntentFilterfilter = new IntentFilter(action);

registerReceiver(receiver2,filter);


6.区别动态注册与静态注册

类别

静态注册

动态注册

注册方式

配置文件

Java代码

注册的时间

应用安装成功/手机开机完成

注册时不会创建对象

接收到广播才创建

执行registerReceiver(receiver, intentFilter)

注册就创建对象

生命结束的时间

(解注册)

应用卸载

对象执行onReceive()后就回收了

执行unregisterReceiver()

(activity退出必须解注册)

解注册后对象被回收

应用情景

需要监听的时间为应用的整个生命过程中

服务于某个Activity/Se

rvice


7.发送两种类型的广播

1.发送一般广播:context.sendBroadCast(Intent intent)
2.发送有序广播:context.sendOrderedBroadcast(Intent intent)
3.区别两种广播

类别

一般广播

有序广播

多人接收时是否有序

无序, 都会同时执行

有序,根据优先级和注册先后依次执行

是否可以中断

不可以

可以, 通过br.abortBroadcast()

中断后, 后面的接收器不能接收到此广播了





0 0
原创粉丝点击