好的..我正在做类似下面的事情:
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();
}
但是,我发现我的进度对话框甚至都没有显示出来。我的应用程序暂停一段时间,所以我知道它在线程t内部,但为什么我的对话框没有出现?
如果删除该行:
t.join();
然后我发现发生的是进度对话框确实显示,但我的应用程序启动stepTwo();在线程中发生的事情完成之前..
有什么想法吗?
答案 0 :(得分:2)
尝试使用处理程序
public class MyActivity {
private Handler handler;
private void onCreate() {
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
pd.dismiss();
stepTwo();
}
};
final ProgressDialog dialog = ProgressDialog.show(this, "Please wait..", "Doing stuff..", true);
Thread t = new MyThread() {
t.start():
}
private class MyThread extends Thread() {
public void run() {
//do some serious stuff...
handler.sendEmptyMessage(0);
}
}
}
答案 1 :(得分:2)
您的join()行会阻止运行ProgressDialog的UI线程。因此,您正在阻止布局,图纸等。