安卓学习笔记2_Broadcast

安卓学习笔记2_Broadcast广播

今天看了<第一行代码>的第五章"全局大喇叭-详解广播机制".刚学完总结一下.
广播的接收也是根据,Intent接收的.
与Activity使用Intent互相启动类似,Broadcast也是使用Intent进行广播.区别在于广播的发送,sendBoradcast(Intent intent),是全局广播形式的发送,所有可以接收到该广播的组件都可以进行响应.

1:Broadcast的接收

Broadcast的注册分为动态注册和静态注册两种.

动态注册:在需要接收广播的组件中使用内部类的方法,创建`Receiver类,继承BroadcastReceiver重写onReceiver()方法
其可以在代码中,自由地控制注册与注销,在灵活性方面有很大的优势.
但是它存在这一个缺点,就是必须要在程序启动之后才能接收到广播,因为注册的逻辑是写在onCreate()方法中的.

在这里插入图片描述
在这里插入图片描述

静态注册:自定义一个Receiver类,继承BroadcastRecever, 重写onReceiver()方法
静态注册接收器,一定要在AndroidManifest.xml配置文件中注册才可以使用.
与隐式启动Activity类似,也是在<Receiver>标签中定义<Intent-filter>过滤广播进行控制.
静态注册的广播可以让程序在未启动的情况下就能接受到广播.
在这里插入图片描述

2:Broadcast的发送-自定义广播

1:广播有两种:标准广播和有序广播.

标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同时接收到这条广播消息,因为它们之间没有任何先后顺序可言.这种广播的效率会比较高,但同时也意味着它是无法被截断的.\

有序广播(Ordered broadcasts)是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器的逻辑执行完毕后,广播才会继续传递.这种时候广播的接收器,是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播.

注:标准广播与有序广播,仅仅是在于广播发送时,代码中的方法不同.
标准广播使用sendBroadcast(Intent intent, 目标))进行广播的发送;而有序广播使用sendOrderedBroadcast(Intent intent, null)进行发送.

2:本地广播

无论是标准广播还是有序广播,广播都是系统全局发送的.也就是这些广播可以跨应用发送.
如果某些广播不想被别的应用知道,规避一些安全问题的话.就要使用本地广播了.
本地广播使用LocalBroadcastManager类对广播进行管理.并提供了发送广播和注册广播接收器的方法.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值