显示延迟的进度对话框

我从Thread.run()以前打开的某个线程打开ProgressDialog。问题是ProgressDialog仅在select_language_by_user()函数完全完成其代码之后才显示。显示延迟的进度对话框

看起来我在调用select_language_by_user()之后有一些暂停,并且在完成之后它会立即打开ProgressDialog和新的Activity。

我尝试用户runOnUiThread()启动ProgressDialog,但它没有帮助。 Handler.post()和.postAtFrontOfQueue()以相同的方式工作。

private void select_language_by_user() throws BhriguException { 

if (logcat == null) {

String message_no_logcat = ""

+ "Невозможно использовать объект ЛОГИРОВАНИЕ "

+ "в функции select_language_by_user";

throw new CriticalException(logcat, message_no_logcat);

}

boolean isLogging = logcat.isLogging();

logcat.set_Logging(false);

logcat.LogD(this, "Запущена функция select_language_by_user");

try { // Основной код процедуры/функции

try { // Попытка открыть диалог прогресса

get_progress().show();

} catch (BhriguException e) {

if (logcat != null)

logcat.LogE(this, "Ошибка создания и отображения диалога прогресса ожидания списка языков" + ": " + EOS + e);

} // END: Попытка открыть диалог прогресса

// Формируем интент

final Intent intent = new Intent(activity_ID3_editor_COMM.this, activity_select_value_from_list.class);

// Добавляем значения

intent.putExtra(activity_select_value_from_list.TITLE, getString(R.string.title_select_language)); // Заголовок окна выбора)

intent.putExtra(activity_select_value_from_list.SHORT_VALUES, logcat.get_available_language_tags());

ArrayList<Integer> colors = new ArrayList<>();

final int background_color = activity.getResources().getColor(R.color.bhrigu_light_lightgray);

for (int i = 0; i < logcat.get_available_language_tags().size(); i++) {

colors.add(background_color);

}

intent.putExtra(activity_select_value_from_list.COLORS, colors);

intent.putExtra(activity_select_value_from_list.VALUES, logcat.get_available_languages());

// Запускаем активность

activity_ID3_editor_COMM.this.startActivityForResult(

intent,

IrmaMainActivity.ID_SELECT_LANGUAGE

);

} catch (OutOfMemoryError e) { // Нехватка памяти - отправляем наверх

if (logcat != null) logcat.NoMemoryAlert(e);

throw new OutOfMemoryError("Нехватка памяти при работе функции запуска окна выбора языка коментария" + ": " + EOS + e);

} catch (Throwable e) { // Другие ошибки - реагируем

String message = ""

+ "Ошибка работе функции запуска окна выбора языка коментария"

+ ": " + EOS + e;

throw new BhriguException(message);

} finally {

if (logcat != null) logcat.set_Logging(isLogging);

} // END: Контроль ошибок

} //END: select_language_by_user()

回答:

问题是android启动线程默认一个一个执行线程。用途:

ExecutorService executor = Executors.newCachedThreadPool(); 

Future<?> future_progress1 = executor.submit(tast1);

Future<?> future_progress2 = executor.submit(tast2);

以上是 显示延迟的进度对话框 的全部内容, 来源链接: utcz.com/qa/257879.html

回到顶部