我在Xamarin.Android上创建应用程序。有一个套接字,它帮助我获取我的应用程序的一些数据。我正在检查这样的互联网连接:Xamarin.Android崩溃没有互联网
_timer = new Timer(CheckNetworkAvailable, new AutoResetEvent(false), 0, 10000);
它调用OnCreate方法。
cts = new CancellationTokenSource();
var isNetwork = await Task.Run(() => this.NetworkRechableOrNot(), cts.Token);
var linear = SupportActionBar.CustomView.FindViewById<LinearLayout>(Resource.Id.linearForActionBanner);
var identOn = linear.FindViewById<ImageView>(Resource.Id.identificator_on);
var identOff = linear.FindViewById<ImageView>(Resource.Id.identificator_off);
RunOnUiThread(() =>
{
identOn.Visibility = !isNetwork ? ViewStates.Gone : ViewStates.Visible;
identOff.Visibility = !isNetwork ? ViewStates.Visible : ViewStates.Gone;
});
if (isNetwork)
{
if (isNetwork != oldNet)
{
oldNet = isNetwork;
MainDataClass.UpdateSymbolsList();
SocketClass.Start();
}
}
else
{
oldNet = isNetwork;
cts.Cancel();
SocketClass.Stop();
}
此处oldNet - 互联网访问的前置状态。
private bool NetworkRechableOrNot()
{
try
{
var connectivityManager = (_Net.ConnectivityManager)GetSystemService(Context.ConnectivityService);
var activeConnection = connectivityManager.ActiveNetworkInfo;
return (activeConnection != null) && activeConnection.IsConnected;
}
catch (Exception)
{
return false;
}
}
这是检查的结果方法。
SocketClass - 套接字和获取数据的类;启动方法创建新的任务并启动它,通过SocketIOClient.Socket创建套接字; Stop方法调用关闭Socket的方法。这一切都工作正常,直到我尝试禁用互联网连接,我只有一次NameResolutionFailure。可能是什么原因呢?我应该改变什么才能正常工作?谢谢。
是的,我明白这一点,但没有互联网应用程序不应该崩溃。最小它应该创造异常,但是没有任何一个。 –
你有没有尝试在SocketClass.Stop()上放置一个“try catch”?检查这个方法是否会抛出一些异常?应用程序崩溃的唯一解释是启动了一些例外。 –
我在每种方法中添加try-catch块,但应用程序崩溃,没有任何例外.... –