【问题标题】:Detaching Connectivity Changes Xamarin Forms分离连接更改 Xamarin 表单
【发布时间】:2023-03-26 00:10:01
【问题描述】:

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

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

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

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

  3. 触发睡眠事件并移除连接

    //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; 

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

我应该在哪里断开连接?

【问题讨论】:

    标签: xamarin.forms xamarin.essentials


    【解决方案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

    【讨论】:

    • 嗨,谢谢你的建议,我会试试的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 2018-03-08
    • 2017-09-20
    • 2014-12-26
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多