Android 从ui线程内的alertdialog onclick事件调用方法

Android 从ui线程内的alertdialog onclick事件调用方法,android,Android,我在RunOnUiThread中的AlertDialog的OnClick事件中调用方法时遇到问题 下面的逻辑是在执行applyUpdate()方法时显示ProgressDialog。如果下载失败或仍在进行中,则该方法返回0。用户可以选择重新启动或继续下载 问题是,当选择重新启动时,AlertDialog仍保留在屏幕上(单击按钮) doDownload()是在对话框关闭之前启动的,是线程问题还是其他问题 public void doApply(View view){ progressDia

我在RunOnUiThread中的AlertDialog的OnClick事件中调用方法时遇到问题

下面的逻辑是在执行applyUpdate()方法时显示ProgressDialog。如果下载失败或仍在进行中,则该方法返回0。用户可以选择重新启动或继续下载

问题是,当选择重新启动时,AlertDialog仍保留在屏幕上(单击按钮)

doDownload()是在对话框关闭之前启动的,是线程问题还是其他问题

public void doApply(View view){
    progressDialog = ProgressDialog.show(UpdateForm.this, "", "Applying update...");

    runOnUiThread(new Runnable() {

        @Override
        public void run() {
            try{
                applyUpdate = nnEngine.applyUpdate();
            } catch (Exception e) {
                // Handle exception
            }

            // Check update result.
            progressDialog.dismiss();
            switch (applyUpdate) {
// Other cases removed.....
                case 0:
                    // Download in progress or failed.
                    AlertDialog.Builder inprogDlg = new AlertDialog.Builder(UpdateForm.this);
                    inprogDlg.setTitle("Download in progress or failed.");

                    inprogDlg.setPositiveButton("Continue download", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();

                        // Wrong button may be displayed.
                        notifyUser(null, checkDownloadButton);
                    }
                });

                inprogDlg.setNegativeButton("Restart download", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        doDownload(getWindow().getDecorView().findViewById(android.R.id.content));
                    }
                });

                inprogDlg.create().show();
                break;
            }
        }
    });
}

doDownload(视图)是一种启动(或在本例中重新启动)下载过程的方法。通常在单击下载按钮时调用。为什么不使用AsyncTask?如果要运行网络连接,则需要使用AsyncTask,因为android从4开始需要它才能进行实际的文件下载?在C++库中是异步的。