Android 理解简单的对话,另一个线程如何更新UI?

Android 理解简单的对话,另一个线程如何更新UI?,android,dialog,progressdialog,android-ui,Android,Dialog,Progressdialog,Android Ui,这个例子是从一本关于Android的书中复制的。正如你从我的问题中所看到的,我对安卓系统还不熟悉,并试图理解它此应用程序应该崩溃,但不会(我正在从另一个线程更新UI。这是不允许的。它应该会导致崩溃。不会。为什么?)。我的代码是: final ProgressDialog dialogue = ProgressDialog.show(this, "title", "message"); new Thread(new Runnable() { @Override

这个例子是从一本关于Android的书中复制的。正如你从我的问题中所看到的,我对安卓系统还不熟悉,并试图理解它此应用程序应该崩溃,但不会(我正在从另一个线程更新UI。这是不允许的。它应该会导致崩溃。不会。为什么?)。我的代码是:

final ProgressDialog dialogue = ProgressDialog.show(this, "title", "message");

       new Thread(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
                try {
                    Thread.sleep(7000);
                dialogue.dismiss();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }



        }
    }).start();
这是在
OnCreate
函数中完成的。我对第行的对话感到困惑这不是从另一个线程更新UI(取消对话)吗?为什么此应用程序不会导致分段错误


谢谢。

你不能
解雇()
在run方法中使用它,因为它是
非UI线程
。如果您想退出,请使用。最好使用该代码只对人正确。您正在使用.start函数启动一个线程,然后调用run函数,7秒后,对话框将退出。对话框。退出()用于取消对话。如果您不调用Disclease(),则进度条永远不会取消。您可以通过注释行线程进行检查。sleep(7000)。

我认为您误解了我的问题或我误解了您的答案。即使我正在从其他线程更新UI,此应用程序也不会崩溃。我想知道为什么它不会崩溃。这是正确的,但我正在从其他线程更新UI。这是不允许的。它会导致崩溃。事实并非如此。为什么?