我在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(); –