4

这个例子是从一本关于 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();

这是在OnCreate函数中完成的。我对线感到困惑 -dialogue.dismiss();这不是从另一个线程更新 UI(关闭对话)吗?为什么这个应用程序不会导致分段错误?

谢谢。

4

1 回答 1

7

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

公共无效解雇()

自:API 级别 1 关闭此对话框,将其从屏幕上移除。可以从任何线程安全地调用此方法。请注意,当对话框被关闭时,您不应重写此方法进行清理,而应在 onStop() 中实现该方法。

于 2012-05-21T08:28:51.320 回答