当前位置:   article > 正文

Android广播机制_android广播的实现方式

android广播的实现方式

广播机制

1.概述

在Android系统中,广播是一种运用在组件之间传递消息的机制。该机制使用了观察者模式,该模型中的消息发布者是广播机制中的广播发送者,消息订阅者是广播机制中的广播接收者。

1.1四大组件

名称作用
活动(Activity)所有Android应用程序的门面,凡是在应用中能看到的东西,都是放在活动中的
服务(Service)比较低调,无法看到,但是会在后台默默地运行;即使用户推出了应用,服务仍然可以继续运行
广播接收器(Broadcast Receiver)允许应用接收来自各处的广播消息,如电话、短信等;也可以向外发出广播消息
内容提供器(Content Provider)为应用程序之间共享数据提供了可能,比如需要读取联系电话薄中的联系人就要通过Content Provider来实现

1.2使用场景

1、在同一个APP内部的同一组件内进行消息通信

2、在同一个APP内部的不同组件之间进行消息通信

3、在同一个APP具有多个进程的不同组件之间进行消息通信

4、在不同APP的组件之间进行消息通信

5、Android系统与APP之间进行消息通信

2.广播接收者

2.1定义

Android系统中内置了很多广播,为了监听来自系统或者应用程序的广播事件,Android系统提供了BroadcastReceiver(广播接收者)组件。当Android系统产生一个广播事件时,可以由多个对应的广播接收者接收并进行处理。这些广播接收者只需要在清单文件或者代码中进行注册并指定要接收的广播事件即可。

2.2创建方式

1、通过在应用程序的包中创建一个类继承BroadcastReceiver并重写onReceive()方法来实现的。

2、通过选中应用程序中的包,右击选择【New】→【Other】→【Broadcast Receiver】选项来创建的。

注意:创建完广播接收者之后还需要对广播接收者进行注册才可以接收广播。

2.3广播接收者注册方式

1、动态注册:在Activity中通过代码注册广播接收者

2、静态注册:在清单文件中配置广播接收者

3.自定义广播与广播的类型

当系统提供的广播不能满足实际需求时,可以自定义广播,同时需要编写对应的广播接收者。

当自定义广播发送消息时,会存储到公共消息区中,而公共消息区中如果存在对应的广播接收者,就会及时的接收这条信息。

3.1广播类型

名称说明优缺点
无序广播无序广播是完全异步执行,发送广播时所有监听这个广播的广播接收者都会接收到此消息,但接收的顺序不确定效率比较高,但无法被拦截,当发送一条广播消息时,所有的广播接收者都会接收到此消息
有序广播按照接收者的优先级接收,只有一个广播接收者能接收消息,在此广播接收者中逻辑执行完毕后,才会继续传递效率低,但有先后顺序,并可被拦截

3.2广播优先级

在动态注册广播接收者时,可以使用IntentFilter对象的setPriority()方法设置优先级别,例如:intentFilter.setPriority(1000)。这里需要说明的是,属性值越大,优先级越高。
如果两个广播接收者的优先级相同,则先注册的广播接收者优先级高。也就是说,如果两个程序监听了同一个广播事件,同时设置了相同的优先级,则先安装的程序优先接收。

3.3指定广播

当发送一条有序广播时,要保证一个广播接收者必须接收到此广播,无论此广播接收者的优先级高或低。要满足这种需求,可以在Activity中使用sendOrderedBroadcast()方法发送有序广播,并设置该方法中传递的第3个参数为指定的广播接收者对象即可。

Intent intent = new Intent();
intent.setAction(“Count_Ducks”); // 定义广播的事件类型
MyBroadcastReceiverThree receiver = new MyBroadcastReceiverThree();
sendOrderedBroadcast(intent,null,receiver, null, 0, null, null); // 发送有序广播

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/350280
推荐阅读
相关标签
  

闽ICP备14008679号