HarmonyOS 鸿蒙Next 监听网络销毁网络相关问题

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 监听网络销毁网络相关问题

项目中的业务场景是需要通过切网来判断当前连接的wifi, 如果连接到的是飞猫设备wifi 则去获取详情(获取详情的时候会有一些弹出框做会提示作用),用以下代码实现,  /** * 创建自定义组件之后,build方法之前,检测wifi状态 / aboutToAppear() { this.wifiChange(); this.changeWifiStatus(); }  /* * 判断网络状态 / changeWifiStatus() { this.wifiOpen = wifiManager.isWifiActive(); this.wifiConnected = wifiManager.isConnected(); }  // 监听网络状态 wifiChange() { wifiManager.on(“wifiConnectionChange”, data => { // wifi 断开 if (data === 0) { this.wifiConnectionStatus = ‘已断开’; } else if (data === 1) { // wifi 连接 this.wifiConnectionStatus = ‘已连接’; this.searchDevice() // 查询设备信息 } else { this.wifiConnectionStatus = ‘未识别的监听结果’; } // 收到监听通知后更新wifi状态变量 this.changeWifiStatus(); }) }  // 连接wifi后进行设备连接 searchDevice() { this.LoadMessage = ‘设备连接中’ this.baseDialog.open();      // 弹出立即绑定弹出框 }  /* * 销毁监听 */ aboutToDisappear(): void { this.baseDialog.close() // 关闭弹出框 try { // 注册监听事件 wifiManager.off(“wifiConnectionChange”, data => { hilog.debug(0xFF00, “wifiManagerDemo”, “wifiConnectionChange>>>>>>>>>>%{public}s”, data); }) } catch (e) { console.log(e); } }  我现在的问题是,当我做切换网络的动作的时候,重复开关网,会走多遍监听,然后弹出很多层弹出框,(但是我已经做了销毁的动作),怎么解决多层弹出框的问题?


更多关于HarmonyOS 鸿蒙Next 监听网络销毁网络相关问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

我看您这边关闭弹出框是放在aboutToDisappear中实现的,很有可能是您测试时,多次调用了searchDevice方法,但是并未触发aboutToDisappear,调用this.baseDialog.close(),您可以在适当位置打断点测试一下。


你可以在调用弹框前设置一个状态值用来判断是否需要开启弹窗。

如以下代码。

    @State isOpen:boolean = false;

    if (!isOpen) {

      this.isOpen = true

      this.baseDialog.open();

    }

    if (isOpen) {

      this.isOpen = false

      this.baseDialog.close()

    }

更多关于HarmonyOS 鸿蒙Next 监听网络销毁网络相关问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next系统中,监听网络销毁及相关问题主要通过系统提供的网络管理API来实现。

  1. 监听网络变化

    • 使用NetworkCallback接口来监听网络状态的变化。这包括网络连接、断开、网络类型变化等。
    • 调用ConnectivityManagerregisterNetworkCallback方法注册网络回调,可以指定感兴趣的网络类型(如WIFI、蜂窝数据等)。
  2. 检测网络销毁

    • NetworkCallbackonLost方法中处理网络断开的情况。该方法会在网络不可用时被调用。
    • 可以结合网络类型和网络状态信息来判断是否为特定的网络被销毁。
  3. 处理网络销毁后的逻辑

    • onLost方法中实现网络断开后的业务逻辑,如重新尝试连接、提示用户等。
    • 也可以在此处释放与网络相关的资源,避免资源泄漏。
  4. 注意事项

    • 确保在适当的时机取消网络回调,避免内存泄漏。
    • 处理网络变化时,要考虑多线程和异步操作,确保线程安全。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部