android四大组件之--->BroadcastReceiver广播接收器

1.概述*:

BroadcastReceiver本质上是一种全局的监听器,用于监听系统全局的广播消息。可以非常方便的实现系统中不同组件之间的通信。
用于接收程序(包括用户开发的程序和系统内建的程序)所发出的Broadcast Intent。
(1)广播类型:标准广播和有序广播
标准广播(Normal broadcasts):完全的异步执行的广播,广播发出之后,所有的广播接收器几乎同一时间接收到广播消息。
有序广播(Ordered broadcasts):同步执行的广播,一条广播发出后,同一时间,只有一个广播接收器能收到这条广播。此时,广播接收器时有优先顺序的。且前面的优先级高的接收器可以截断赈灾传递的广播,这样后面的广播就收不到广播了。

2.步骤*:

1>自定义接收器类,继承BroadcastReceiver类。实现onReceive()方法。
2>注册广播,注册的方法有两种,后面介绍。
3>发送广播:sendBroadcast(intent);前提是创建intent,且其中添加action。
发送广播演示:
这里写图片描述

3.注册*:

注册方式包括静态常驻型和动态注册。

  • 动态注册(即在代码中注册):
    @1利用registerReceiver()方法:
    这里写图片描述
    @2动态注册的广播一定要在destroy()中取消注册:
    这里写图片描述

  • 静态方法:在manifest.xml中注册:
    在< receiver/ >标签中注册:
    这里写图片描述

4.利用系统本身的action,监听特定事件:(注意获得权限)

比如:网络改变时,系统会发出一条值为anroid.net.conn.CONNECTIVITY_CHANGE的广播。
这里可以创建一个广播接收器接收此广播,使网络一变化时,执行接收器中操作。

注:如果这里在接收器中,对网络情况进行查询了,那么android系统为了保证应用程序的安全性,需要在配置文件中声明权限,否则程序会崩溃。所以这里网络状态的查询需要声明权限:
可以到API:Manifest.permission中查看权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

5.范例1:发送标准广播(且自定义广播)

1)自定义广播接收器:
这里写图片描述
2)静态注册:
这里写图片描述
3)发送自定义广播
这里写图片描述

6.范例2:发送有序广播

步骤:
1>另自定义一个广播接收器。。
2>在配置文件中注册,要使其有优先级,需在配置时加上android:priority=””
这里写图片描述
3>发送广播时,用sendOrderedBroadcase(intent,null);参数是intent和与权限有关的字符串。
4>要实现拦截,不让以后的接收器再接收。
要在自定义的接收器中截断广播:abortBroadcast();

7.范例3:利用广播建闹钟

1)利用AlarmManager管理闹钟
2)打开闹钟:利用AlarmManager中的setRepeating()方法;
3)关闭闹钟:利用AlarmManager中的manager.cancel(pending)方法;
示例:
创建AlarmManager实例:

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);// 1.获得alarammanager,通过获取系统服务

打开闹钟:
这里写图片描述

解析:
PendingIntent pending = PendingIntent.getBroadcast(
getApplicationContext(), 0x22, intent,
PendingIntent.FLAG_UPDATE_CURRENT);//0x22为其特有的唯一的标识符。
manager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + 3000, 6000, pending);//参数为:tpye类型,闹钟响的时间,间隔时间,延时intent

关闭闹钟:
这里写图片描述
自定义的接收广播中进行闹钟设置,这里以弹出Toast消息代替。
这里写图片描述
效果演示:
这里写图片描述

8.范例:接收系统的广播:

需要权限:广播允许监听文件卸载
这里写图片描述
注册:
这里写图片描述

9.使用本地广播*

1)概述:

之前我们发送和接收的广播都是属于系统全局广播,即发出的广播其他任何应用程序都可以接收到,这样容易引起安全性的问题。
这里介绍的本地广播,只能在应用程序的内部进行传递,且广播的接收器也只能接收来自本应用程序发出的广播。

2)用法:

与之前的广播的区别:
1>获得LocalBroadcastManager实例
2>利用LocalBroadcastManager来发送广播,和注册广播

3)范例:

创建实例:
这里写图片描述
动态注册:
这里写图片描述
发送广播:
这里写图片描述

效果演示:
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值