我在runOnUiThread中遇到了Android問題。我開始一個等待一段時間的AsyncTask(在一個Activity內),並且在調用方法showDialog(id)之後。在這次調用之後,它又睡了一會兒,並完成調用方法dismissDialog(id)。如何在繼續執行之前'刷新'UI線程操作
這是代碼:
public class MyActivity extends Activity {
...
protected class StartWaiting extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Show dialog
runOnUiThread(new Runnable() {
@Override
public void run() {
showDialog(PROGRESS_DIALOG_LOADING);
}
});
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Dismiss dialog
runOnUiThread(new Runnable() {
@Override
public void run() {
dismissDialog(PROGRESS_DIALOG_LOADING);
}
});
return null;
}
@Override
protected void onPostExecute(Void arg) {
new StartServices().execute();
}
}
}
不幸的是,該行爲是從我想要做的不同:的ShowDialog()和dismissDialog()被稱爲後立即另一個。
我認爲這種情況發生的原因是UI線程執行兩個動作「什麼時候可以」,即在睡眠動作結束時。
那麼,它是否存在一些「flushUI()」方法強制一個線程(在這種情況下,UI線程)在繼續之前執行每個動作?
你怎麼運行的AsyncTask? –
new StartWaiting()。execute(); –