gpt4 book ai didi

android - Xamarin.Android 在没有互联网的情况下崩溃

转载 作者:行者123 更新时间:2023-11-30 01:57:07 25 4
gpt4 key购买 nike

我在 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 - 用于套接字和获取数据的类; Start 方法创建新任务并启动它,通过 SocketIOClient.Socket 创建套接字; Stop 方法调用 Socket 的 Close 方法。在我尝试禁用互联网连接之前一切正常,我只遇到一次 NameResolutionFailure。可能是什么原因呢?我应该改变什么才能让它工作正常?谢谢。

最佳答案

我认为主要原因是您的互联网已关闭。您需要互联网来尝试解析一些地址。

关于android - Xamarin.Android 在没有互联网的情况下崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32055981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com