Android 系统广播:深入了解 Android 的通信基础297


在 Android 操作系统中,系统广播是一种强大的机制,用于在设备上运行的应用程序之间和应用程序与系统组件之间进行通信。广播提供了一种轻量级、异步的方式来传递事件、更新状态和触发操作。

Android 系统预定义了广泛的系统广播,涵盖设备状态更改、网络连接更改、intent 过期等各种事件。当系统或其他应用程序触发满足特定广播条件的事件时,Android 会发送相应的广播。所有已注册接收该广播的应用程序都将收到此通知。

广播接收器

要处理系统广播,应用程序必须注册一个广播接收器并指定它感兴趣的广播。广播接收器是一个类,它实现 BroadcastReceiver 接口并覆写 onReceive() 方法。onReceive() 方法在收到所注册的广播时被调用。

以下是注册和处理系统广播的一个示例:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 处理广播事件
}
}
// 在清单文件中注册广播接收器






粘性广播

某些系统广播是粘性的,这意味着它们不会被系统立即删除。相反,它们会一直存在,直到它们被处理。这对于处理诸如设备引导完成或电池状态更改之类的重要事件非常有用。

要接收粘性广播,应用程序只需在 IntentFilter 中设置 android:sticky 属性为 true。

以下是注册和处理粘性广播的一个示例:






有序广播

有序广播允许多个应用程序接收和处理相同的广播。与常规广播不同,有序广播不会同时发送给所有注册的接收器。相反,它们按照优先级顺序依次发送。

要发送有序广播,可以使用 PendingIntent.FLAG_RECEIVER_REGISTERED_ONLY 标志。

以下是发送有序广播的一个示例:
Intent intent = new Intent();
(".MY_BROADCAST");
PendingIntent pendingIntent = (context, 0, intent, PendingIntent.FLAG_RECEIVER_REGISTERED_ONLY);
(intent, null, null, pendingIntent, null, 0, null, null);

本地广播

为了在应用程序内部发送和处理广播,Android 提供了本地广播管理器。本地广播在应用程序进程中发送和接收,并且不传播到其他应用程序。

要使用本地广播,可以使用 LocalBroadcastManager 类。

以下是使用本地广播发送广播的示例:
(context).sendBroadcast(intent);

以下是使用本地广播接收广播的示例:
(context).registerReceiver(myReceiver, new IntentFilter(".MY_LOCAL_BROADCAST"));

自定义广播

除了预定义的系统广播之外,应用程序还可以发送和接收自定义广播。自定义广播由应用程序定义,可以用于应用程序之间或应用程序与组件之间的通信。

要发送自定义广播,可以使用 Intent.ACTION_SEND 或 Intent.ACTION_EDIT_CONTENT 作为 action。然后应用程序可以使用 sendBroadcast() 方法发送广播。

以下是发送自定义广播的示例:
Intent intent = new Intent();
(".MY_CUSTOM_BROADCAST");
("data", "Hello World!");
(intent);

要接收自定义广播,应用程序可以使用 IntentFilter 注册广播接收器。

以下是接收自定义广播的示例:
IntentFilter intentFilter = new IntentFilter();
(".MY_CUSTOM_BROADCAST");
(myReceiver, intentFilter);


系统广播是 Android 操作系统中的一个强大功能,它允许应用程序之间以及应用程序与系统组件之间进行通信。通过预定义的系统广播、粘性广播、有序广播、本地广播和自定义广播的组合,Android 提供了广泛的通信选项,帮助应用程序有效地协作。

2025-01-06


上一篇:华为鸿蒙操作系统 3.0:深入浅出解读

下一篇:华为鸿蒙系统:现状与未来