android 四大组件只------BroadCastReceiver(广播)

广播主要分为有序广播和标准广播 (后面还会提到本地广播)

 有序广播就是:有执行顺序的,这是同步的,上一个接受完之后,才会传给下一个,也可以进行拦截,不传下去 

标准广播就是:异步的,跟别人没有关系,所有的广播接收器都能几乎同时受到。

 接受系统广播  

  广播接收器可以自由地对自己感兴趣的广播进行注册,注册的方式分为两种 

1.动态注册广播  (程序必须启动的时候才能接收到)

  IntentFilter  intentfilter=new IntentFilter();

 intentfilter.addAction("xxxxxxxxxxx");这里面就是系统发送的一些广播

 class  xxxBrro  extends  BroadCastReceiver{

           onReceiver()

}  写一个类继承广播  需要实现一个方法onReceiver()  处理的逻辑就是在这个方法里面写的  然后在实例化你创的这个类

通过 registerReceiver()这个方法来注册   里面有两个参数   第一个是 你创建的那个实例  第二个是 intentfilter

动态注册要注意一点   要在Activity销毁的时候取消掉   用这个方法unregisterReceiver() 取消

2.静态注册广播 (程序不启动的时候也能接收到)

这个是在清单文件AndroidMainifest.xml中注册的   这里也要写一个类去继承 BroadCastReceiver这个类   

然后在清单文件中 跟注册Activity差不多   它的方式是:

<receiver  android:name="xxxxxxxxxx">  这个xxxxxxxx表示你自己创建的那个类的名字,记得要包名加类名

<intent-filter>

<action android:name=" 这个是系统广播"

</intent-filter>

</receiver>

注意:  有时候还需要一些权限,不要忘记了。。。。。

上面说到怎么接受系统广播   下面说下怎么发送广播

  发送自定义广播

 发送标准广播

在发送广播之前,我们要先定义一个广播接收器,这里可以选择上面的任何一种注册方式 

发送广播也需要用到 Intent  这里的实现方式是:

Intent intent=new Intent("xxxxxxxxxxx");这里面就是你要发送的那个广播   然后在

sendBroadcast(intent); 通过sendBroadcast这个方法就可以了,里面有个参数就是 Intent  ,这里也可以传值过去 


发送有序广播  

  广播是一种可以跨进程的通信方式,因此我们应用程序发送的广播,其他程序也是可以接收到的 

 注册的方式还是上面两种 但是发送的方式就不一样了  它是这样实现的 :

sendOrderedBroadcast()通过这个方法  里面有两个参数   第一个是还是 Intent  第二个参数是  跟权限有关的字符串 一般都给null   比如在静态注册的时候申明  priority=100  这个是在这个位置申明的,不要添加错了

intent-filter  priority=100>

<action android:name=" 这个是系统广播"

</intent-filter>

</receiver>


 上面说到有序广播是可以进行拦截的,不传给下一个   它是这样实现的:

abortBroadcast();通过这个方法下一个广播接收器就收不到了 ,因为被上一个拦截了。

本地广播 

 本地广播 相对于自定义广播来说稍微复杂一些  主要是通过 LocalBroadcastManager来对广播进行管理的,并且提供了发送广播和注册广播接收器的方法 

发送广播是这样实现的:

 LocalBroadcastManager  lbm=LocalBroadcastManager.getInstance(this)//通过这种方式来获取实例   

Intent  intent=new Intent()//里面放的是你要发送的广播 

lbm.sendBroadcast(intent) // 发送本地广播  

发送广播就是这么简单    然后是注册本地广播监听器 

记住 这里是动态注册的  本地广播无法通过静态注册的方式来接受的   跟上面的是一样的,只有一个地方不一样  就是 注册的时候,它是这样实现的:

lbm.registerReceiver()//里面两个参数还是一样的  不过是通过这个类来实现的 LocalBroadcastManager

本地广播有哪几个优点呢?

 1. 可以明确的知道正在发送的广播不会离开我们的程序,因此不需要担心机密数据泄露的问题 

2. 其他程序无法将广播发送到我们程序的内部,因袭不需要担心会有安全漏洞的隐患

3.发送本地广播比发送全局广播会更高效。 

广播说到这里就告一段落,基本的功能都讲到了。。。


  
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值