我正在使用Mvvmcross6在Xamarin.Android中开发一个应用程序。要检查网络状态,我目前正在使用以下代码:
这种方法正确吗? Mvvmcross6中有什么新东西吗?
public void NetworkStatus()
{
_state = NetworkState.Unknown;
//Retrieve the connectivity manager service
var connectivityManager = (ConnectivityManager)Application.Context.GetSystemService(Context.ConnectivityService);
//Check if the network is connected or connecting.
//This means that it will be available,
//or become available in a few seconds.
var activeNetworkInfo = connectivityManager.ActiveNetworkInfo;
if(activeNetworkInfo.IsConnectedOrConnecting)
{
_state = activeNetworkInfo.Type == ConnectivityType.Wifi ? NetworkState.ConnectedWifi : NetworkState.ConnectedData;
}
else
{
_state = NetworkState.Disconnected;
}
}
答案 0 :(得分:2)
MvvmCross有一个Network Plugin,但它并不能完全满足您的需求。 MvvmCross网络插件提供了用于进行Web API调用的跨平台实现。网络插件还具有可访问性服务,该服务可用于查看是否可以成功ping主机。
James Montemagno还提供了Xamarin Connectivity Plugin。该插件与您要完成的任务更加匹配。它具有用于确定您是否已连接以及可用的连接类型的API。
最后,有一个Xamarin Essentials与Xamarin连接插件非常接近。 Xamarin Essentials就像一个厨房水槽插件库,具有跨平台的连接性支持等等。这是3个库中的最新库,并且是最新的高质量文档。
如果您只关心Android,那么您的代码就可以了。