Android 理解简单的对话,另一个线程如何更新UI?
这个例子是从一本关于Android的书中复制的。正如你从我的问题中所看到的,我对安卓系统还不熟悉,并试图理解它此应用程序应该崩溃,但不会(我正在从另一个线程更新UI。这是不允许的。它应该会导致崩溃。不会。为什么?)。我的代码是:Android 理解简单的对话,另一个线程如何更新UI?,android,dialog,progressdialog,android-ui,Android,Dialog,Progressdialog,Android Ui,这个例子是从一本关于Android的书中复制的。正如你从我的问题中所看到的,我对安卓系统还不熟悉,并试图理解它此应用程序应该崩溃,但不会(我正在从另一个线程更新UI。这是不允许的。它应该会导致崩溃。不会。为什么?)。我的代码是: final ProgressDialog dialogue = ProgressDialog.show(this, "title", "message"); new Thread(new Runnable() { @Override
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
函数中完成的。我对第行的对话感到困惑代码>这不是从另一个线程更新UI(取消对话)吗?为什么此应用程序不会导致分段错误
谢谢。你不能
解雇()
在run方法中使用它,因为它是非UI线程
。如果您想退出,请使用。最好使用该代码只对人正确。您正在使用.start函数启动一个线程,然后调用run函数,7秒后,对话框将退出。对话框。退出()用于取消对话。如果您不调用Disclease(),则进度条永远不会取消。您可以通过注释行线程进行检查。sleep(7000)。我认为您误解了我的问题或我误解了您的答案。即使我正在从其他线程更新UI,此应用程序也不会崩溃。我想知道为什么它不会崩溃。这是正确的,但我正在从其他线程更新UI。这是不允许的。它会导致崩溃。事实并非如此。为什么?