コード例 #1
0
        void download(UpdateInfo updateInfo)
        {
            System.ComponentModel.BackgroundWorker bgWorker = null;

            Acr.UserDialogs.IProgressDialog progressDialog = null;

            bgWorker         = new System.ComponentModel.BackgroundWorker();
            bgWorker.DoWork += (bgSender, bgArgs) =>
            {
                var        objArgs      = bgArgs.Argument as object[];
                UpdateInfo _updateInfo_ = objArgs[0] as UpdateInfo;
                new Util.DownloadUtils().DownloadFileByHttpRequest
                (
                    requestUri: _updateInfo_.Url,
                    fileLength: _updateInfo_.FileLength,
                    saveFileFolder: System.IO.Path.Combine(Common.StaticInfo.AndroidExternalCachePath, "UpdateAPKs"),
                    renameDownloadFileName: string.Empty, // string.Empty 取默认文件名
                    backgroundWorker: bgWorker,
                    eventArgs: bgArgs                     // 传入 bgArgs 参数, 在 DownloadFileByHttpRequest 返回结果 -- 下载文件的最终路径
                );

                System.Threading.Thread.Sleep(500); // 为显示进度 100 %
            };

            bgWorker.RunWorkerCompleted += (bgSender, bgResult) =>
            {
                progressDialog.Hide();
                if (bgResult.Error != null)
                {
                    Acr.UserDialogs.UserDialogs.Instance.Alert(new Acr.UserDialogs.AlertConfig()
                    {
                        Title   = "捕获异常",
                        Message = bgResult.Error.GetFullInfo()
                    });
                }
                else
                {
                    try
                    {
                        string path = bgResult.Result as string;
                        System.Diagnostics.Debug.WriteLine($"打开APK安装器。APK路径[{path}]");
                        App.AndroidIntentUtils.InstallAPK(path);
                    }
                    catch (Exception ex)
                    {
                        string msg = $"{ex.GetFullInfo()}";
                        System.Diagnostics.Debug.WriteLine(msg);
                        Acr.UserDialogs.UserDialogs.Instance.Alert(new Acr.UserDialogs.AlertConfig()
                        {
                            Title   = "捕获异常",
                            Message = msg
                        });
                    }
                }
            };

            bgWorker.WorkerReportsProgress = true;
            bgWorker.ProgressChanged      += (bgSender, bgArgs) =>
            {
                if (progressDialog.IsShowing == false)
                {
                    progressDialog.Show();
                }
                progressDialog.Title           = $"正在下载...";
                progressDialog.PercentComplete = bgArgs.ProgressPercentage;
            };

            progressDialog = Acr.UserDialogs.UserDialogs.Instance.Progress();
            bgWorker.RunWorkerAsync(new object[] { updateInfo });
        }
コード例 #2
0
 public static void ShowProgressDialog()
 {
     currentProgressDialog?.Show();
 }