【问题标题】:Why does this NOT cause crash? I am updating UI from other thread为什么这不会导致崩溃?我正在从其他线程更新 UI
【发布时间】:2012-05-21 16:28:51
【问题描述】:

这个例子是从一本关于 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(关闭对话)吗?为什么此应用不会导致分段错误?

谢谢。

【问题讨论】:

  • 可能解雇只会泄漏对话框。

标签: android dialog thread-safety android-ui


【解决方案1】:

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

public voiddismiss()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多