问题描述
在我的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 (将#修改为@)