在Xamarin插件连通性(Xam.Plugin.Connectivity)中,有一种从PCL中检测网络连接性变化的简单方法,例如:
CrossConnectivity.Current.ConnectivityChanged += (sender, args) =>
{
page.DisplayAlert("Connectivity Changed", "IsConnected: " + args.IsConnected.ToString(), "OK");
};
属性IsConnected
是只读的,所以我的问题是:
是否有一种方法可以手动/以编程方式将IsConnected
设置为false或以其他方式模拟丢失的网络连接?
发布于 2018-03-07 07:56:26
我不相信有一种方法可以编程地模拟缺少的网络连接。显然,你可以在模拟器和实际设备上做其他的事情来达到你想要的目的。我不确定用例在这里是什么,但是您可以尝试使用类似的
CrossConnectivity.Current.IsRemoteReachable("TestHostname", 80, 1000)
而不是像您所说的那样依赖于IsConnected属性,它是只读的。如果希望用户“断开连接”,请将一个无效的主机名交给该方法,如果希望他们“连接”,则向其传递一些有效的信息。
发布于 2018-03-07 14:44:50
实现一个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);
https://stackoverflow.com/questions/49155460
复制相似问题