鸿蒙 ArkUI 进行网络状态监听封装

发布于:2025-03-30 ⋅ 阅读:(20) ⋅ 点赞:(0)

在鸿蒙应用开发中,监听网络状态的变化是常见的需求,比如在网络断开时提醒用户,或者在网络恢复时执行某些操作。本文将介绍如何使用 ArkUI 进行网络状态监听,并封装成一个易于使用的组件。

1. 使用 @ohos.net.connection 监听网络状态

ArkUI 提供了 @ohos.net.connection 模块用于监听网络状态,我们可以基于它封装一个自定义的 NetworkStatus 组件。

安装依赖

ets 文件中使用网络监听模块前,需要先在 config.json"app" 配置项中添加权限:

{
  "module": {
    "reqPermissions": [
      {
        "name": "ohos.permission.GET_NETWORK_INFO"
      }
    ]
  }
}

2. 封装网络状态监听模块

我们可以封装一个 NetworkMonitor 类,用于监听网络状态变化,并通知 UI 进行更新。

import connection from '@ohos.net.connection';

class NetworkMonitor {
  private static instance: NetworkMonitor;
  private callback: ((isConnected: boolean) => void) | null = null;

  private constructor() {}

  static getInstance(): NetworkMonitor {
    if (!NetworkMonitor.instance) {
      NetworkMonitor.instance = new NetworkMonitor();
    }
    return NetworkMonitor.instance;
  }

  public startListening(callback: (isConnected: boolean) => void) {
    this.callback = callback;
    connection.on('netAvailable', () => {
      console.info('网络已连接');
      this.callback?.(true);
    });
    connection.on('netUnavailable', () => {
      console.warn('网络已断开');
      this.callback?.(false);
    });
  }

  public stopListening() {
    connection.off('netAvailable');
    connection.off('netUnavailable');
    this.callback = null;
  }
}

3. 在 ArkUI 组件中使用网络监听

现在,我们可以在 ArkUI 组件中使用 NetworkMonitor,并动态更新 UI。

import { NetworkMonitor } from './NetworkMonitor';

@Entry
@Component
struct NetworkStatusDemo {
  @State isConnected: boolean = true;

  aboutToAppear() {
    NetworkMonitor.getInstance().startListening((status: boolean) => {
      this.isConnected = status;
    });
  }

  aboutToDisappear() {
    NetworkMonitor.getInstance().stopListening();
  }

  build() {
    Column({ space: 10 }) {
      Text(this.isConnected ? '网络连接正常' : '网络已断开')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
        .padding(10)
    }.padding(20);
  }
}

4. 运行效果

当网络连接或断开时,页面会实时更新状态:

  • 连接正常时,显示 网络连接正常
  • 断开网络时,显示 网络已断开

5. 总结

本文介绍了如何使用 ArkUI 监听网络状态,并封装成一个可复用的 NetworkMonitor 组件。这样在应用中,我们可以在多个页面中方便地使用网络监听功能,提升用户体验。