为什么这不会导致崩溃?我正在从其他线程更新UI

Ano*_*non 4 android dialog thread-safety android-ui

此示例是从Android上的一本书中复制而来的.正如您从我的问题中看到的,我是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();
Run Code Online (Sandbox Code Playgroud)

这是在OnCreate功能上完成的.我对行感到困惑 - dialogue.dismiss();是不是从另一个线程更新UI(解除对话)?为什么这个应用程序不会导致分段错误?

谢谢.

Gra*_*eme 7

驳回()方法可safetly在任何线程作为Android文档中描述的运行.

public void dismiss()

从以下版本开始:API Level 1关闭此对话框,将其从屏幕上删除.可以从任何线程安全地调用此方法.请注意,在关闭对话框时不应覆盖此方法以进行清理,而是在onStop()中实现该方法.