简体   繁体   中英

Xamarin.Android crashes without Internet

I create app on Xamarin.Android. There is a socket, with it's help I'm getting some data for my app. I'm checking the internet connection like this:

_timer = new Timer(CheckNetworkAvailable, new AutoResetEvent(false), 0, 10000);

It calls in OnCreate method.

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();
                }

Here oldNet - previos status of internet access.

private bool NetworkRechableOrNot()
    {
        try
        {
        var connectivityManager = (_Net.ConnectivityManager)GetSystemService(Context.ConnectivityService);
        var activeConnection = connectivityManager.ActiveNetworkInfo;
        return (activeConnection != null) && activeConnection.IsConnected;
        }
        catch (Exception)
        {
            return false;
        }
    }

And this is the result method for checking.

SocketClass - class for socket and getting data; Start method creating new Task and Start it, socket created via SocketIOClient.Socket; Stop method calls Close method of Socket. And it all works fine until I try to disable internet connection, I got only once NameResolutionFailure. What can be the reason of it? And what should I change for meking it works fine? Thanks.

I think the main reason is your internet is off. You need a internet to try resolve some address.

我解决了这个问题,没有正确实现套接字,它进入了循环,因为当套接字出错时,它会自行调用并没有完成,这就是崩溃的原因。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM