我有一个 android 应用程序,我正在执行以下操作:
private void onCreate() {
final ProgressDialog dialog = ProgressDialog.show(this, "Please wait..", "Doing stuff..", true);
new Thread() {
public void run() {
//do some serious stuff...
dialog.dismiss();
}
}.start();
stepTwo();
}
而且我想确保我的线程在 stepTwo() 之前完成;叫做。我该怎么做?
谢谢!
最佳答案
Thread 实例有一个 join 方法,所以:
private void onCreate() {
final ProgressDialog dialog = ProgressDialog.show(this, "Please wait..", "Doing stuff..", true);
Thread t = new Thread() {
public void run() {
//do some serious stuff...
dialog.dismiss();
}
};
t.start();
t.join();
stepTwo();
}
不过你可能想试试这个:
private void onCreate() {
final ProgressDialog dialog = ProgressDialog.show(this, "Please wait..", "Doing stuff..", true);
Thread t = new Thread() {
public void run() {
//do some serious stuff...
SwingUtilities,invokeLater(new Runnable() {
public void run() {
dialog.dismiss();
}
});
stepTwo();
}
};
t.start();
}
因为 onCreate 在 UI 线程中,在那里加入将卡住 UI 直到 onCreate 完成后,保存所有对话框直到那时。 stepTwo
必须使用 SwingUtilities.invokeLater
自行更改任何 UI。
关于java - 在移动到下一个方法之前等待内联线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2861109/