鸿蒙开发中,有没有简易广播的实现?
创建最简化的 BroadcastManager 类,用于注册、发送和接收广播消息。
import java.util.ArrayList;
import java.util.List;
public class BroadcastManager {
// 定义一个接口用于广播回调
public interface BroadcastReceiver {
void onReceive(String message);
}
// 存储所有注册的广播接收器
private static List<BroadcastReceiver> receivers = new ArrayList<>();
// 注册广播接收器
public static void registerReceiver(BroadcastReceiver receiver) {
receivers.add(receiver);
}
// 发送广播消息给所有注册的接收器
public static void sendBroadcast(String message) {
for (BroadcastReceiver receiver : receivers) {
receiver.onReceive(message);
}
}
}
接下来,在 AbilitySlice 中使用 BroadcastManager。
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Text;
public class MainAbilitySlice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
setUIContent(ResourceTable.Layout_ability_main);
Text messageText = (Text) findComponentById(ResourceTable.Id_message_text);
Button sendButton = (Button) findComponentById(ResourceTable.Id_send_button);
// 注册广播接收器
BroadcastManager.registerReceiver(message -> messageText.setText(message));
// 点击按钮时发送广播
sendButton.setClickedListener(component ->
BroadcastManager.sendBroadcast("Broadcast received!"));
}
}
简化的布局文件(XML)。
<!-- ability_main.xml -->
<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:width="match_parent"
ohos:height="match_parent"
ohos:orientation="vertical"
ohos:alignment="center">
<Text
ohos:id="$+id:message_text"
ohos:width="wrap_content"
ohos:height="wrap_content"
ohos:text="Waiting for Broadcast..." />
<Button
ohos:id="$+id:send_button"
ohos:width="wrap_content"
ohos:height="wrap_content"
ohos:text="Send Broadcast"
ohos:margin_top="20vp" />
</DirectionalLayout>
在鸿蒙开发中,可以通过以下步骤实现简易广播:
首先创建一个广播接收器,然后注册广播接收器,在合适的时机发送广播。以下是一个简单的示例代码: