用户点击“下载文件”按钮即可开始下载。 Xamarin.Android应用程序利用ProgressBar小部件显示下载进度。
开始下载的按钮具有分配给它的Click事件的以下异步事件处理程序:
async void StartDownloadHandler(object sender, System.EventArgs e)
{
_progressBar.Progress = 0;
Progress<DownloadBytesProgress> progressReporter = new Progress<DownloadBytesProgress>();
progressReporter.ProgressChanged += (s, args) => _progressBar.Progress = (int)(100 * args.PercentComplete);
Task<int> downloadTask = DownloadHelper.CreateDownloadTask(DownloadHelper.ImageToDownload, progressReporter);
int bytesDownloaded = await downloadTask;
System.Diagnostics.Debug.WriteLine("Downloaded {0} bytes.", bytesDownloaded);
}
在前面的代码片段中,Progress封装了一个将更新ProgressBar的lambda,显示已下载的字节百分比。重要的是要意识到Progress将在它实例化的同一个SynchronizationContext中执行。因此,因为在UI线程上创建了Progress,所以它将在UI线程中运行。没有必要在提供的lambda中显式使用RunOnUIThread来更新UI。
我在xamarin.android上看不到DownloadHelper。我想创建一个下载方法