You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms项目添加ConnectivityChanged事件处理器后不触发如何解决

问题核心

你自定义了ConnectivityChanged事件,但没有和Xamarin.Essentials提供的系统级网络状态变更事件关联,你自己声明的事件没有主动触发的逻辑,自然不会执行事件处理方法。

解决步骤

  • 移除你代码中自定义的ConnectivityChanged事件和OnConnectivityChanged触发方法,直接使用Xamarin.Essentials内置的网络变更事件即可
  • 调整事件订阅逻辑,绑定官方事件,同时补充取消订阅逻辑避免内存泄漏

修改后的完整代码

public partial class Main : TabbedPage
{
    public Main()
    {
        InitializeComponent();
        // 订阅Xamarin.Essentials提供的系统网络变更事件
        Xamarin.Essentials.Connectivity.ConnectivityChanged += HandleConnChange;
    }

    // 参数匹配官方事件定义的参数类型
    void HandleConnChange(object sender, Xamarin.Essentials.ConnectivityChangedEventArgs e)
    {
        Console.WriteLine("A network change was detected");
        // 可扩展获取当前网络状态逻辑:e.NetworkAccess
    }

    // 页面销毁时取消订阅,避免内存泄漏
    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        Xamarin.Essentials.Connectivity.ConnectivityChanged -= HandleConnChange;
    }
}

额外注意事项

  • 确认已安装最新版Xamarin.Essentials NuGet包,Android平台的MainActivity.OnCreate方法中已调用Xamarin.Essentials.Platform.Init(this, savedInstanceState);完成初始化
  • 你之前添加的[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]权限配置正确,无需修改
  • iOS平台无需额外权限配置,可直接使用该能力

内容的提问来源于stack exchange,提问作者Owen Burns

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:12:04