Java 在另一个对话框之后显示对话框:挂起

Java 在另一个对话框之后显示对话框:挂起,java,android,dialog,Java,Android,Dialog,我有一个非常奇怪的问题,到目前为止我无法调试。。。 问题是…我的应用程序需要下载一些东西才能工作。因此,在onCreate()方法的开头,我检查是否已经下载了一些内容。如果没有,我会弹出一个对话框,要求用户下载它 if (!isInstalled) { showDialog(DIALOG_INSTALL); } else { start(); } 其中start()方法执行其他一些操作。现在,该showDialog

我有一个非常奇怪的问题,到目前为止我无法调试。。。 问题是…我的应用程序需要下载一些东西才能工作。因此,在onCreate()方法的开头,我检查是否已经下载了一些内容。如果没有,我会弹出一个对话框,要求用户下载它

if (!isInstalled) {
            showDialog(DIALOG_INSTALL);
        } else {
            start();
        }
其中start()方法执行其他一些操作。现在,该showDialog将其称为:

builder = new AlertDialog.Builder(MyApp.this);
        builder.setMessage("Would you like to install...")
        .setCancelable(false)
        .setPositiveButton("Install", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.dismiss();
                aManager.install(MyApp.this);
            }
        });
        dialog = builder.create();
        return dialog;
此时会显示我的对话框,我正在单击,因此会调用aManager.install()。我之所以传递上下文,是因为aManager.install()会弹出一个ProgressDialog来显示下载进度,并生成一个新线程,其中所有内容都已下载。显然,在创建对话框之前,我会创建一个处理程序来接收来自aManager.install()的响应。响应可能会有所不同,因为例如,internet连接不可用(引发并捕获异常,并使用不同的代码调用侦听器)

现在,当这种情况发生时(异常),我想调用另一个对话框,说“出现了问题,您想重试吗?”…因此,再次调用showDialog(dialog_REINSTALL)(这次使用另一个代码)。 事情是……showDialog()被调用(我可以通过日志来验证),但对话框没有显示。相反,我的应用程序只是挂起

有人知道它为什么这么做吗????没有引发异常,logcat中绝对没有任何内容,我无法告诉它挂起的位置…只需查看调用了该方法并显示对话框即可


非常感谢

看起来您遇到了死锁。我会将下载代码放在单独的线程上,例如使用
AsyncTask
。在
task.onPreExecute()
中,您可以关闭第一个对话框并弹出进度对话框,通过覆盖
task.onProgressUpdate()
使用
.show()
而不是
.create()
来更新进度对话框