0

0

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

煙雲

煙雲

发布时间:2025-12-16 10:09:58

|

185人浏览过

|

来源于php中文网

原创

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

WowTo
WowTo

用AI建立视频知识库

下载
  • 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 的语义理解清楚,别把它当成“是否有信号”来用。

相关专题

更多
数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

352

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2075

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

347

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

324

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

410

2023.10.16

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

401

2023.10.16

vb连接数据库的方法
vb连接数据库的方法

vb连接数据库的方法有使用ADO对象库、使用OLEDB数据提供程序、使用ODBC数据源等。详细介绍:1、使用ADO对象库方法,ADO是一种用于访问数据库的COM组件,可以通过ADO连接数据库并执行SQL语句。可以使用ADODB.Connection对象来建立与数据库的连接,然后使用ADODB.Recordset对象来执行查询和操作数据;2、使用OLEDB数据提供程序方法等等。

221

2023.10.19

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 12.6万人学习

Java 教程
Java 教程

共578课时 | 48.6万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 6.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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