【发布时间】:2012-06-29 00:01:56
【问题描述】:
我试图在我的一个活动的 onCreate() 方法期间显示进度对话框,在线程中完成填充屏幕的工作,然后关闭进度对话框。
这是我的 onCreateMethod()
dialog = new ProgressDialog(HeadlineBoard.this);
dialog.setMessage("Populating Headlines.....");
dialog.show();
populateTable();
populateTable 方法包含我的线程和关闭对话框的代码,但出于某种原因。活动出现空白大约 10 秒(执行 populateTable() 工作),然后我看到屏幕。我从来没有看到显示的对话框,有什么想法吗?
这里是 populateTable() 代码:
//Adds a row to the table for each headline passed in
private void populateTable() {
new Thread() {
@Override
public void run() {
//If there are stories, add them to the table
for (Parcelable currentHeadline : allHeadlines) {
addHeadlineToTable(currentHeadline);
}
try {
// code runs in a thread
runOnUiThread(new Runnable() {
@Override
public void run() {
dialog.dismiss();
}
});
} catch (final Exception ex) {
Log.i("---","Exception in thread");
}
}
}.start();
}
【问题讨论】:
-
If there are stories, add them to the table。您在 UI 线程上运行此代码,而不是在您创建的线程上。 -
不确定您的建议是什么?
-
将runOnUiThread中的所有代码移出到void run(),只留下
dialog.dismiss(); -
这给了我“只有创建视图的原始线程......”例外。
-
或者我没有做出正确的改变?
标签: android