C# 表单下载数据OnStart()或OnAppearing()

C# 表单下载数据OnStart()或OnAppearing(),c#,xamarin.forms,xamarin-forms-4,C#,Xamarin.forms,Xamarin Forms 4,在我的Xaman表单应用程序中,我需要下载一个json文件来填充列表视图。 我首先检查互联网是否正常,然后下载带有动画页面的json文件 我把app.cs放进去了 public App() { InitializeComponent(); MainPage = new NavigationPage(new AnimatePage()); } protected override

在我的Xaman表单应用程序中,我需要下载一个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;
        }
在OnStart上这样做是好的还是在Ui OnAppearing()中这样做更好?
我这样做只是为了尽可能地开始下载,但我如何知道在AnimaPage文件中下载并打开主页?

我会在AnimatePage OnAppearing()中这样做,这样可以更清楚地了解应该发生的事情。现在在App()构造函数中,您已经设置了MainPage,它将在该页面的appearing()上运行,大约与应用的OnStart()方法相同。它们是由两个不同的线程启动的。如果只有一秒钟的差异,那么在appearing()上做任何事情都会更容易:)
protected override async void OnAppearing()
        {
           base.OnAppearing();
           label.Text = "Loading ....";
            
          await Navigation.PushAsync(new MainPage());
        }