android BroadcastReceiver发送消息
时间: 2025-06-21 10:28:58 浏览: 11
### 实现BroadcastReceiver发送广播消息
#### 创建BroadcastReceiver
为了能够接收并处理广播消息,在应用程序中需定义一个类来继承`BroadcastReceiver`,并且重写其`onReceive()`方法。每当有匹配的广播发出时,该方法会被调用。
```java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 当接收到广播时执行的操作
Toast.makeText(context, "Message received!", Toast.LENGTH_SHORT).show();
Log.d("Broadcast", "MyBroadcastReceiver");
}
}
```
#### 注册BroadcastReceiver
注册可以有两种方式:静态注册和动态注册。前者是在`AndroidManifest.xml`文件内声明;后者则通过Java代码完成。
- **静态注册**
在`<application>`标签下添加如下配置:
```xml
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<!-- 定义此接收者感兴趣的action -->
<action android:name="com.example.CUSTOM_BROADCAST"/>
</intent-filter>
</receiver>
```
- **动态注册**
如果希望程序运行期间临时监听某些特定事件,则可以选择动态注册的方式。
```java
// 动态注册
IntentFilter filter = new IntentFilter("com.example.CUSTOM_BROADCAST");
registerReceiver(new MyBroadcastReceiver(), filter);
```
#### 发送广播
当需要向其他组件传递数据或通知它们发生某个事件时,可以通过`sendBroadcast(Intent)`函数发送标准广播,或者利用`LocalBroadcastManager.sendBroadcast()`来进行本地广播(仅限于当前应用内部)。对于有序广播可采用`sendOrderedBroadcast(Intent, String)`。
```java
// 构建意图对象
Intent broadcastIntent = new Intent("com.example.CUSTOM_BROADCAST");
// 设置额外参数
broadcastIntent.putExtra("key", value);
// 广播出去
sendBroadcast(broadcastIntent); // 或者 LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent)
// 对于有序广播
sendOrderedBroadcast(broadcastIntent,null);
```
#### 注意事项
- 如果是使用API Level 26及以上版本的应用,默认情况下不会自动启动未显式激活的服务、活动或其他后台进程。因此建议开发者考虑使用前台服务或者其他替代方案。
- 使用完毕后记得注销已注册过的广播接收器以节省资源,特别是在Activity生命周期结束前解除绑定[^1]。
阅读全文
相关推荐




















