MAUI怎么监听网络状态变化 MAUI Connectivity教程

煙雲
发布: 2025-12-16 10:09:58
原创
185人浏览过
MAUI 监听网络状态变化核心依赖 Microsoft.Maui.Essentials.Connectivity,它跨平台、免权限、无需原生代码;通过 NetworkAccess 判断互联网可达性(Internet/Local/None),用 ConnectivityChanged 事件实时响应变化,并支持 ConnectionProfiles 区分 WiFi/蜂窝等类型。

maui怎么监听网络状态变化 maui connectivity教程

MAUI 监听网络状态变化,核心靠 Microsoft.Maui.Essentials.Connectivity,它跨平台、开箱即用,不需要额外权限(iOS/Android 侧系统已默认支持),也不用写原生桥接代码。

获取当前网络访问状态

Connectivity 提供的是“是否能访问互联网”的语义判断,不是单纯看有没有连上 WiFi 或蜂窝网。关键看 NetworkAccess 枚举:

  • NetworkAccess.Internet:设备可访问公网(如能打开 google.com)
  • NetworkAccess.Local:仅局域网通(比如连了 WiFi 但没网关/没外网)
  • NetworkAccess.None:完全无网络连接

用法很简单:

var access = Connectivity.Current.NetworkAccess;
if (access == NetworkAccess.Internet)
    Console.WriteLine("在线,可发起 API 请求");
else if (access == NetworkAccess.Local)
    Console.WriteLine("在内网,可能无法访问云服务");
else
    Console.WriteLine("离线中");
登录后复制

实时监听网络变化事件

别轮询,用 Connectivity.ConnectivityChanged 事件——只要网络状态一变(比如断网、切 WiFi、开启飞行模式),就会触发:

// 建议在页面或服务生命周期开始时注册
Connectivity.ConnectivityChanged += OnConnectivityChanged;

void OnConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
{
    var newAccess = e.NetworkAccess;
    var profile = e.ConnectionProfiles; // 如 [Wifi], [Cellular]

    if (newAccess == NetworkAccess.Internet)
        ShowOnlineToast();
    else
        ShowOfflineHint();
}
登录后复制

⚠️ 注意:该事件是全局的,记得在页面销毁或服务停用时反注册,避免内存泄漏:

Connectivity.ConnectivityChanged -= OnConnectivityChanged;
登录后复制

区分网络类型(WiFi / 蜂窝 / 以太网

如果业务需要按网络类型做策略(例如只在 WiFi 下自动更新),用 ConnectionProfiles

Project IDX
Project IDX

Google推出的一个实验性的AI辅助开发平台

Project IDX 166
查看详情 Project IDX
  • ConnectionProfile.WiFi
  • ConnectionProfile.Cellular
  • ConnectionProfile.Ethernet
  • ConnectionProfile.Unknown

示例判断是否在 WiFi:

bool isOnWifi = Connectivity.Current.ConnectionProfiles.Contains(ConnectionProfile.WiFi);
登录后复制

注意:多个 profile 可能同时存在(如 WiFi + 蓝牙 PAN),所以要用 Contains 而非直接比对。

离线场景下的实用建议

真实用户场景中,光知道“离线”还不够,还得处理得自然:

  • 界面层加个轻量提示条(非弹窗),2 秒后自动收起
  • API 请求失败时,先检查 Connectivity.Current.NetworkAccess,再决定重试 or 缓存队列
  • 本地数据库操作照常执行,等联网后再同步(配合 依赖注入 封装同步逻辑)
  • iOS 模拟器偶尔返回不准确状态,真机测试更可靠

基本上就这些。Connectivity API 设计简洁,重点是把 NetworkAccessConnectionProfiles 的语义理解清楚,别把它当成“是否有信号”来用。

以上就是MAUI怎么监听网络状态变化 MAUI Connectivity教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号