Android中广播的种类
广播是Android中一项非常重要的机制,它可以在应用程序之间传递消息和数据,实现应用程序的协作和交互。Android中的广播分为两种类型:系统广播和自定义广播。
一、系统广播
系统广播是由Android系统发出的广播,用于通知应用程序系统级的事件和状态改变。常见的系统广播包括:
- 系统启动广播(BOOT_COMPLETED):当设备启动完成后发送的广播,应用程序可以在接收到这个广播后执行一些初始化操作。
// 注册接收系统启动广播的广播接收器
<receiver android:name=".BootCompletedReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
// 广播接收器类
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
// 执行初始化操作
// ...
}
}
}
- 电池状态改变广播(ACTION_BATTERY_CHANGED):当设备的电池状态发生改变时发送的广播,应用程序可以根据电池状态进行相应的操作。
// 注册接收电池状态改变广播的广播接收器
<receiver android:name=".BatteryChangedReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_CHANGED" />
</intent-filter>
</receiver>
// 广播接收器类
public class BatteryChangedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float) scale;
// 根据电池电量进行相应的操作
// ...
}
}
}
- 网络状态改变广播(CONNECTIVITY_ACTION):当设备的网络连接状态发生改变时发送的广播,应用程序可以根据网络状态进行相应的操作。
// 注册接收网络状态改变广播的广播接收器
<receiver android:name=".NetworkChangedReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
// 广播接收器类
public class NetworkChangedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
// 网络已连接
// ...
} else {
// 网络未连接
// ...
}
}
}
}
二、自定义广播
自定义广播是应用程序自己发送和接收的广播,用于应用程序内部的模块之间的通信。自定义广播可以基于特定的事件或状态来定义。
// 发送自定义广播
Intent intent = new Intent("com.example.MY_CUSTOM_ACTION");
intent.putExtra("extra_data", "Hello, world!");
sendBroadcast(intent);
// 接收自定义广播的广播接收器
<receiver android:name=".CustomReceiver">
<intent-filter>
<action android:name="com.example.MY_CUSTOM_ACTION" />
</intent-filter>
</receiver>
// 广播接收器类
public class CustomReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.example.MY_CUSTOM_ACTION")) {
String extraData = intent.getStringExtra("extra_data");
// 处理自定义广播数据
// ...
}
}
}
以上是Android中广播的种类和示例代码。通过广播,应用程序可以实现不同模块之间的信息传递和协作,提升用户体验和应用程序的功能。在使用广播时,需要注意广播的发送和接收的权限,避免滥用广播机制造成性能和安全问题。
序列图:
sequenceDiagram
participant App1
participant Broadcast
participant App2
App1 ->> Broadcast: 发送广