此示例是从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(解除对话)?为什么此应用不会导致细分错误?
感谢。
答案 0 :(得分:7)
dismiss()方法可以在任何线程上安全地运行,如Android文档中所述。
public void dismiss()
自:API级别1关闭此对话框,将其从屏幕上删除。 可以从任何线程安全地调用此方法。请注意你 当对话框出现时,不应该覆盖此方法来进行清理 被解雇,而是在onStop()中实现。