虚拟主机安装网站,有没有永久免费的进销存软件,徐州软件外包,郴州房产网监听Wifi状态变化 前言创建接收状态变化的Bean对象创建订阅者和订阅事件参考资料#xff1a; 前言
本篇博文通过动态订阅公共事件来说明怎么使用HarmonyOS监听Wifi状态的变化。关于动态订阅公共事件的概念#xff0c;官网有详细说明#xff0c;再次就不在赘述。博文相关项目… 监听Wifi状态变化 前言创建接收状态变化的Bean对象创建订阅者和订阅事件参考资料 前言
本篇博文通过动态订阅公共事件来说明怎么使用HarmonyOS监听Wifi状态的变化。关于动态订阅公共事件的概念官网有详细说明再次就不在赘述。博文相关项目源码地址传送门。公共事件的监听需要通过订阅和注销两步。
创建接收状态变化的Bean对象
该对象主要用来存储Wifi当前的状态比如是否已经链接、是否断开等。同时该Bean对象还定义了一个subscriber用来保持订阅者用来执行订阅和注销 export class CommonEventBean {//省略部分代码/*** The state of common events.*/state: Resource $r(app.string.event_init_state);//保存订阅者对象subscriber: any null;
}创建订阅者和订阅事件
监听Wifi变化需要先调用CommonEventManager.createSubscriber创建订阅者保存返回的订阅者对象subscriber用于执行后续的订阅、退订等操作。下面看看就看具体怎么来监听Wifi变化的 /**param commonEventItem 保存状态的Bean对象*/subscribe(commonEventItem: CommonEventBean, callback: Function): void {let toastMsg: Resource;let commonEvent commonEventItem;//创建需要订阅的事件此处为CONN_STATEconst subscribeInfo {events: [CommonConstants.CONN_STATE]};//创建订阅者CommonEventManager.createSubscriber(subscribeInfo, (err, subscriber) {if (err) {toastMsg $r(app.string.subscribe_fail);//创建订阅失败执行回调刷新相关UIcallback(commonEvent, toastMsg);return;}// 创建订阅者失败执行回调刷新相关UIif (subscriber null) {toastMsg $r(app.string.need_subscriber);callback(commonEvent, toastMsg);return;}//保存订阅者用来后面的注销操作commonEvent.subscriber subscriber;//通过订阅者subscriber 执行订阅 //订阅回调函数返回的data内包含了公共事件的名称、发布者携带的数据等信息CommonEventManager.subscribe(subscriber, (err, data) {if (err) {//订阅失败执行回调刷新相关UItoastMsg $r(app.string.subscribe_fail);callback(commonEvent, toastMsg);return;}let connState: string | undefined data?.data;if (connState undefined) {return;}//变量当前Wifi状态switch (connState) {case WifiState.CONNECTING:commonEvent.state 连接中;break;case WifiState.DISCONNECTED:commonEvent.state 已断开;break;case WifiState.DISCONNECTING:commonEvent.state 正在断开;break;case WifiState.UNKNOWN_STATE:commonEvent.state 未知状态;break;case WifiState.AP_CONNECTED:commonEvent.state 已连接;break;default:break;}//执行回调刷新相关UIcallback(commonEvent);})toastMsg $r(app.string.subscribe_success);//执行回调刷新相关UIcallback(commonEvent, toastMsg);})}
参考资料
系统公共事件ArkTS 动态订阅公共事件 源码地址