连接性 - 如何手动/以编程方式将 IsConnected 属性设置为 False
Posted
技术标签:
【中文标题】连接性 - 如何手动/以编程方式将 IsConnected 属性设置为 False【英文标题】:Connectivity - How to Manually / Programmatically Set IsConnected Property to False 【发布时间】:2018-08-15 18:20:54 【问题描述】:在 Xamarin 插件 Connectivity (Xam.Plugin.Connectivity) 中,有一种从 PCL 检测网络连接变化的简单方法,例如:
CrossConnectivity.Current.ConnectivityChanged += (sender, args) =>
page.DisplayAlert("Connectivity Changed", "IsConnected: " + args.IsConnected.ToString(), "OK");
;
属性IsConnected
是只读的,所以我的问题是:
有没有办法手动/以编程方式将 IsConnected
设置为 false 或以其他方式模拟丢失的网络连接?
【问题讨论】:
使用飞行模式 @Jason - 很遗憾,我正在使用模拟器,但无法设置飞行模式。 ***.com/questions/4808433/… 【参考方案1】:实现一个 MockConnectivity:
using Plugin.Connectivity.Abstractions;
namespace MyMockConnectivity
public class MockConnectivity : BaseConnectivity
public void SetIsConnected(bool value)
OnConnectivityChanged(new ConnectivityChangedEventArgs IsConnected = value );
public override bool IsConnected get;
...
用途:
using MyMockConnectivity;
using Plugin.Connectivity.Abstractions;
...
MockConnectivity MockConnectivity = new MockConnectivity();
IConnectivity Current = MockConnectivity;
Current.ConnectivityChanged += (sender, args) =>
Debug.WriteLine("IsConnected: " + args.IsConnected);
;
模拟连接变化:
// Simulate network connection
MockConnectivity.SetIsConnected(true);
// Simulate lost network connection
MockConnectivity.SetIsConnected(false);
【讨论】:
【参考方案2】:我认为没有办法以编程方式模拟丢失的网络连接。您显然可以在模拟器和真实设备上做其他事情来实现您正在寻找的东西。我不确定这里的用例是什么,但你可以尝试使用类似
CrossConnectivity.Current.IsRemoteReachable("TestHostname", 80, 1000)
而不是依赖 IsConnected 属性,正如您所说,它是只读的。 如果您希望用户“断开连接”,请给方法一个无效的主机名,如果您希望他们“连接”,请给它一些有效的东西。
【讨论】:
以上是关于连接性 - 如何手动/以编程方式将 IsConnected 属性设置为 False的主要内容,如果未能解决你的问题,请参考以下文章