gpt4 book ai didi

Android runOnUiThread 解释

转载 作者:IT老高 更新时间:2023-10-28 22:17:18 37 4
gpt4 key购买 nike

我试图在我的一项 Activity 的 onCreate() 方法期间显示进度对话框,在线程中完成填充屏幕的工作,然后关闭进度对话框。

这是我的 onCreateMethod()

dialog = new ProgressDialog(HeadlineBoard.this);
dialog.setMessage("Populating Headlines.....");
dialog.show();
populateTable();

populateTable 方法包含我的线程和关闭对话框的代码,但出于某种原因。 Activity 出现空白大约 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();

}

最佳答案

如果您已经拥有“for (Parcelable currentHeadline : allHeadlines)”的数据,那么为什么要在单独的线程中执行此操作?

您应该在单独的线程中轮询数据,并在完成收集数据后,在 UI 线程上调用您的 populateTables 方法:

private void populateTable() {
runOnUiThread(new Runnable(){
public void run() {
//If there are stories, add them to the table
for (Parcelable currentHeadline : allHeadlines) {
addHeadlineToTable(currentHeadline);
}
try {
dialog.dismiss();
} catch (final Exception ex) {
Log.i("---","Exception in thread");
}
}
});
}

关于Android runOnUiThread 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11254523/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com