表单下载数据OnStart或OnAppearing

问题描述

在我的Xamain Forms应用程序中,我需要下载一个json文件以填充列表视图。 我先检查互联网是否正常,然后下载带有动画页面的json文件

我放入了app.cs

  public App()
            {
                InitializeComponent();
            MainPage = new NavigationPage(new AnimatePage());
            }

    protected override async void OnStart()
            {
                var isConnected = await CheckForInternetConnectionAsync();
                if (isConnected)
                {
                     await DownloadjsonAsync();                
             }
                else
                {
                    //internet down
                }
            }
        private static async Task<bool> CheckForInternetConnectionAsync()
        {
            using (var tokSource = new CancellationTokenSource(5000))
            {
                try
                {
                    await _httpClient.GetAsync("http://google.com/generate_204",tokSource.Token);
                }
                catch (OperationCanceledException)
                {
                    return false;
                }
                catch (Exception e)
                {

                    return false;

                }
            }
            return true;
        }
private static async Task<bool> DownloadjsonAsync()
        {
            using (var tokSource = new CancellationTokenSource(5000))
            {
                try
                {
                    

                    var response = await _httpClient.GetAsync("http://url/file.json",tokSource.Token);
                    using (var stream = await response.Content.ReadAsstreamAsync())
                    {
                        var localFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
                        var newpath = Path.Combine(localFolder,"milka.json");
                        var fileInfo = new FileInfo(newpath);
                        using (var fileStream = fileInfo.OpenWrite())
                        {
                            await stream.copyToAsync(fileStream);
                        }
                    }
                }
                catch (OperationCanceledException)
                {
                    return false;
                }
                catch (Exception e)
                {

                    return false;

                }
            }
            return true;
        }

在AnimatePage中:

protected override async void OnAppearing()
        {
           base.OnAppearing();
           label.Text = "Loading ....";
            
          await Navigation.PushAsync(new MainPage());
        }

在OnStart上执行此操作是好事还是在Ui OnAppearing()中做得更好? 我只是想像这样开始尽可能地开始下载,但是我如何知道在AnimaPage文件中下载并打开mainPage?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)