android 自定义广播案例饭堂吃饭
时间: 2024-12-14 16:16:30 浏览: 17
在Android中,自定义广播(Custom Broadcast)是一种用于应用程序之间传递消息的重要机制,尤其当需要跨组件或应用更新信息时非常有用。比如,在一个模拟“饭堂吃饭”的场景中,你可以创建一个自定义广播来通知用户食堂的新菜单、排队状态或其他相关信息。
假设有一个“食堂App”负责发布更新信息,而另一个“就餐助手App”订阅了这个广播。以下是简单的步骤:
1. **创建自定义广播**: 首先,在“食堂App”里,创建一个`FoodUpdateBroadcast`类,继承自`LocalBroadcastReceiver`,并在其中定义发送广播的方法:
```java
public class FoodUpdateBroadcast extends LocalBroadcastReceiver {
private static final String ACTION_FOOD_UPDATED = "com.example.FOOD_UPDATED";
@Override
public void onReceive(Context context, Intent intent) {
// 发送新的食堂信息
Intent updateIntent = new Intent(ACTION_FOOD_UPDATED);
context.sendBroadcast(updateIntent);
}
}
```
2. **发送广播**: 当食堂有新变化时,比如添加菜品,可以在相应的Activity或Service中调用`sendBroadcast()`方法:
```java
FoodUpdateBroadcast foodBroadcast = new FoodUpdateBroadcast();
Intent foodUpdateIntent = new Intent(ACTION_FOOD_UPDATED);
foodBroadcast.onReceive(this, foodUpdateIntent);
```
3. **订阅广播**: 在“就餐助手App”中,需要注册接收者来处理这个广播。通常在`AndroidManifest.xml`中声明:
```xml
<receiver android:name=".YourReceiverClass">
<intent-filter>
<action android:name="com.example.FOOD_UPDATED" />
</intent-filter>
</receiver>
```
然后在对应的接收者类中,覆盖`onReceive()`方法来解析并显示新的食堂信息给用户:
```java
public class YourReceiverClass extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (ACTION_FOOD_UPDATED.equals(intent.getAction())) {
// 解析并展示新菜单
}
}
}
```
阅读全文