分离连接更改 Xamarin 表单

Posted

技术标签:

【中文标题】分离连接更改 Xamarin 表单【英文标题】:Detaching Connectivity Changes Xamarin Forms 【发布时间】:2021-09-14 08:43:11 【问题描述】:

我正在使用 Xamarin.Essentials 来处理连接更改,这一切都适用于 android

但是我注意到在 ios 中它不起作用,我调试并注意到

    在 iOS 物理设备中向下滑动屏幕

    将手机置于平面模式并移除 wifi

    触发睡眠事件并移除连接

    //App.Xaml
    
    protected override void OnSleep()
    
        Connectivity.ConnectivityChanged -= OnConnectivityChanged;
    
    
    protected override void OnStart()
    
        Connectivity.ConnectivityChanged += OnConnectivityChanged;
    
    
    
    
    protected override void OnResume()
    
         Connectivity.ConnectivityChanged += OnConnectivityChanged;
    
    

如果我注释掉

 Connectivity.ConnectivityChanged -= OnConnectivityChanged; 

一切正常。 我错过了显而易见的事情吗?

我应该在哪里断开连接?

【问题讨论】:

【参考方案1】:

这是因为Forms生命周期与原生平台的声明式生命周期方式有些不同,可以直接在原生ios生命周期中进行。

在您的 ios 项目 AppDelegate.cs 中:

public override void OnActivated(UIApplication application)
    
        Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
    

 public override void DidEnterBackground(UIApplication uiApplication)
    
        Connectivity.ConnectivityChanged -= Connectivity_ConnectivityChanged;
    

 private void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
    
        //do some thing
    

您可以参考lefecycle。

注意: 在 iOS 13(及更高版本)上,您还需要将它们写入 SceneDelegate

【讨论】:

嗨,谢谢你的建议,我会试试的

以上是关于分离连接更改 Xamarin 表单的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 表单 - Webview 检测 URL 更改

从视图模型更改 Xamarin 表单应用程序页面

根据布尔值更改 Xamarin 表单标签的文本

如何在 xamarin 表单中更改搜索栏取消按钮图像

Onclicking listview 单元格仅更改单击的单元格 xamarin 表单的内容

如何更改 xamarin 表单中的导航页后退按钮