Android四大组件之BroadcastReceiver

叮~~,通知消息来啦!

简介

BroadcastReceiver (广播接收者),顾名思义,这是一个应用程序之间用来发送接收广播的一个组件,是一种常用的应用之间通信手段。比如开机自启动软件,设备开机后发送广播,软件接收到之后开机广播,就启动该软件;插入耳机提醒、连接网络提醒、电量提醒等等,均为发送广播。

广播类型

广播分为两类:标准广播、有序广播。

标准广播:完全异步的广播,发出广播后,所有广播接收器几乎会在同一时刻收到这条广播。

有序广播:同步执行的广播,发出广播后,同一时刻只有一个广播接收者可以收到该广播。当该广播接收者处理完毕后 ,将会继续传递该广播;如果该广播接收者截断广播,那么后面的接收者将永远接收不到广播信息。

接收系统广播

在 App 接收之前,我们需要先注册广播接收器以接收系统广播。注册分为两种方式:动态注册、静态注册。

动态注册:在 java 代码中指定 IntentFliter ,然后添加不同的 Action 即可,想监听什么广播就写什么 Action。对于动态注册的广播,必须要使用 unRegisterReceiver 让广播取消注册。

静态注册:动态注册需要在程序启动后才能接收广播,静态广播就弥补了这个短板,在 AndroidManifest 中制定 \ 就可以让程序在未启动的情况下接收到广播了。

发送广播

上面讲的都是接收广播,接下来将发送广播。发送广播之前需要注册一个广播接收器,用于发送广播。在使用前我们需要先重写一下 onReceive() 方法,以定义发送的广播信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// MyBroadcastReceiver.java
public class MyBroadcastReceiver extends BroadcastReceiver {
private final String ACTION_BOOT = "com.example.broadcasttest.MY_BROADCAST";
@Override
public void onReceive(Context context, Intent intent) {
if(ACTION_BOOT.equals(intent.getAction()))
Toast.makeText(context, "这是一个广播",Toast.LENGTH_SHORT).show();
}
}


// AndroidManifest.xml 相关配置
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="com.example.broadcasttest.MY_BROADCAST"/>
</intent-filter>
</receiver>

对于标准广播和有序广播,需要用不同的方法去传输广播:

1
2
sendBroadcast(intent);               //标准广播
sendOrderedBroadcast(intent, null); //有序广播
感谢您的支持
-------------本文结束感谢您的阅读-------------