如何在应用程序启动时从 url 加载数据

How can i load data from an url on app start

在我的 xamarin.forms 中,我需要在应用程序启动时加载数据。我知道代码必须在 App.cs 页面中。我可以在单击按钮时加载数据,现在我想在应用程序启动时加载数据。

的正确解决方案是什么

只需开始在 App.cs 的构造函数中加载数据。如果需要,您可以在后台线程上执行此操作。

Task.Run(() =>
            {
                // Do stuff in here
            });

使用 ContinueWith 处理任何异常。

更新

根据我在下面的评论,我不推荐这种方式,使用 OnStart 是一种更好的方法。

在那里添加异步并以这种方式加载。在iOS.

的情况下,构造函数需要return和return用17秒
protected async override void OnStart()
{

}

此外,请确保在所有代码周围放置一个 try/catch,因为没有 return 例外的任务。

您可以使用 async/await,如果您需要完成下载并在您仍在使用 OnStart 方法时对您的数据执行某些操作:

protected async override void OnStart()
{
    // Handle when your app starts

    //retrieve your data
    TypeOfDataObject dataObj = await GetMyData();

   // Do stuff with your data
}

private Task<TypeOfDataObject> GetMyData()
{
      //Get your data from URL
      return dataObj;
}

您需要等待数据,并确保处理无法获取数据并给用户重试的机会。

我是这样操作的:

protected async override void OnStart ()
{
    do
    {
        try
        {
            _data = await GetData();
        }
        catch(Exception e)
        {
             var errorMessage = e.Message; // Todo: Use nicer error message
             await loadingPage.DisplayAlert ("Error", errorMessage, "RETRY");
        }
    } while (_data = null);

    // Do stuff with _data
}

您可以在我的 DDD North Agenda App Sample.

中看到这个工作的完整示例以及显示加载页面