android 广播使用
时间: 2023-07-11 09:46:07 浏览: 118
Android 广播可以用于应用程序内部的组件之间通信,也可以用于不同应用程序之间的通信。应用程序可以发送广播,也可以注册广播接收器来接收广播并做出相应的处理。
使用广播的基本步骤如下:
1. 定义广播接收器
广播接收器是一个继承自 BroadcastReceiver 的类,用于接收和处理特定的广播。在广播接收器中实现 onReceive() 方法来处理接收到的广播。例如:
```java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 处理接收到的广播
}
}
```
2. 注册广播接收器
在应用程序的代码中,可以使用代码动态注册广播接收器,也可以在 AndroidManifest.xml 文件中静态注册广播接收器。例如:
```java
// 动态注册广播接收器
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.MY_ACTION");
registerReceiver(receiver, filter);
```
```xml
<!-- 静态注册广播接收器 -->
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="com.example.MY_ACTION" />
</intent-filter>
</receiver>
```
3. 发送广播
在应用程序中发送广播可以使用 Intent 对象,通过设置 Action 和其他相关参数来指定广播的内容。例如:
```java
Intent intent = new Intent();
intent.setAction("com.example.MY_ACTION");
intent.putExtra("data", "Hello, broadcast!");
sendBroadcast(intent);
```
4. 处理广播
广播接收器会在接收到广播时调用 onReceive() 方法,可以在该方法中处理广播内容。例如:
```java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if ("com.example.MY_ACTION".equals(intent.getAction())) {
String data = intent.getStringExtra("data");
// 处理接收到的广播
}
}
}
```
需要注意的是,广播接收器的 onReceive() 方法在主线程中执行,因此不能在该方法中执行耗时操作,否则会导致程序无响应。如果需要执行耗时操作,可以考虑使用 IntentService 或 AsyncTask 等异步操作方式来执行。
阅读全文