我試圖在從API加載一些數據時顯示ProgressDialog。我將APIPost放到一個線程中,出於調試的目的,我一直讓線程休眠3秒,試圖讓對話框出現。但是,當我啓動線程時,不會出現對話框,並且UI線程只是掛起。我錯過了什麼嗎?ProgressDialog在線程運行時不顯示
final ProgressDialog dialog;
dialog = new ProgressDialog(MyClassName.this);
dialog.setTitle("");
dialog.setMessage("Loading...");
dialog.setCancelable(false);
Thread runner = new Thread(){
JSONObject jTemp;
@Override
public void run(){
try {
synchronized(this){
wait(3000);
}
getFarmProperties.postAPI(tempAddress);
do {
jTemp = getFarmProperties.getJSON();
} while (jTemp == null);
}
catch(InterruptedException ex){
}
}
};
try {
runner.start();
dialog.show();
runner.join();
dialog.dismiss();
} catch (Exception e) {
e.printStackTrace();
}
是否有原因,而不是使用AsyncTask? – ElliotM
我在我的postAPI方法中使用了AsyncTask。我試過把它放在一個AsyncTask中,結果相同 –
你從哪裏調用這個? 'runner.join()'導致當前線程等待後臺線程終止。如果你在UI線程中調用它,你將有效地阻止你的UI更新,直到後臺線程完成。 – dhke