Я пытаюсь отобразить диалог прогресса во время метода onCreate() одного из моих действий, выполнить работу, чтобы заполнить экран, сделанный в потоке, и затем отменить диалог прогресса.Android runOnUiThread объяснение
Вот мой 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();
}
'Если есть истории, добавьте их в таблицу'. Вы запускаете этот код в потоке пользовательского интерфейса, а не в потоке, который вы создали. –
не уверен, что вы предлагаете? – user1154644
Переместить весь код в runOnUiThread из void run(), оставить только 'dialog.dismiss();' –