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

标签 android dialog thread-safety android-ui

这个例子是从一本关于安卓的书上抄来的。正如您从我的问题中看到的那样,我是 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 函数中完成的。我对行感到困惑 - dialogue.dismiss(); 这不是从另一个线程更新 UI(关闭对话)吗?为什么此应用不会导致段错误?

谢谢。

最佳答案

dismiss()方法可以在任何线程上安全运行,如 Android 文档中所述。

public void dismiss ()

Since: API Level 1 Dismiss this dialog, removing it from the screen. This method can be invoked safely from any thread. Note that you should not override this method to do cleanup when the dialog is dismissed, instead implement that in onStop().

关于android - 为什么这不会导致崩溃?我正在从其他线程更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10681574/

相关文章:

c++ - 如何在 C++ 中使共享内存线程安全的容器

java - Spring mongoTemplate线程安全吗?

java - 在Android中无需打开邮件应用程序即可通过应用程序发送电子邮件

android - SurfaceHolder.lockCanvas() 太贵了

android - 在 Android 设备上重新签名应用程序(.apk、.air)。类命令行

android - 手动输入未保存在 Android 的 DatePicker(对话框)中

java - 借助 AlertDialog 将新对象添加到自定义数组适配器

java - PowerVR 的优点和缺点是什么?

java - 来自后台线程的 PopUp 对话框 Android

c - 可移植 ISR 安全数据传递