返回
BroadcastReceiver源码分析之普通消息
Android
2023-11-26 05:57:51
----
## 概述
BroadcastReceiver用于在Android应用程序之间进行通信。它允许应用程序在不直接通信的情况下相互发送消息。BroadcastReceiver可以注册监听特定的广播意图,当该意图被广播时,它将被触发并执行相应的操作。
## 发送广播
### 发送普通广播
应用程序可以通过`Context.sendBroadcast()`方法发送广播。
```java
Intent intent = new Intent("com.example.my_broadcast");
intent.putExtra("data", "Hello World!");
context.sendBroadcast(intent);
```
### 发送有序广播
应用程序也可以发送有序广播,这种广播可以按照一定的顺序被接收。
```java
Intent intent = new Intent("com.example.my_broadcast");
intent.putExtra("data", "Hello World!");
context.sendOrderedBroadcast(intent, null);
```
## 接收广播
应用程序可以通过`BroadcastReceiver`类来接收广播。
```java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 处理广播
}
}
```
然后在`AndroidManifest.xml`中注册广播接收器
```xml
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="com.example.my_broadcast" />
</intent-filter>
</receiver>
```
## 粘性广播
粘性广播允许应用程序在发送广播后立即接收该广播。这意味着,即使应用程序在广播发送时未运行,它仍可以接收该广播。
```java
Intent intent = new Intent("com.example.my_broadcast");
intent.putExtra("data", "Hello World!");
context.sendStickyBroadcast(intent);
```
要接收粘性广播,应用程序可以像接收普通广播一样使用`BroadcastReceiver`类。
```java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 处理广播
}
}
```
然后在`AndroidManifest.xml`中注册广播接收器
```xml
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="com.example.my_broadcast" />
</intent-filter>
</receiver>
```
## 结论
BroadcastReceiver是Android应用程序之间进行通信的一种强大工具。它允许应用程序在不直接通信的情况下相互发送消息。