Я пишу свое первое приложение для Android. У меня есть ExpandableListView
на моей основной компоновке, которая занимает некоторое время, чтобы загрузить (~ 5 секунд). Мне нужно вызвать статический метод до или после того, как пользовательский интерфейс был отображен теоретически, но этот метод абсолютно должен иметь возможность отображать AlertDialog
. Из моих тестов пользовательский интерфейс должен отображаться до отображения любого AlertDialog, что имеет смысл.Android - Запуск UI-зависимого кода сразу после завершения основного макета
С моей точки зрения, приложение отображает пользовательский интерфейс, когда возвращается onResume()
. Однако, кажется, нет никакого простого способа выполнить код в потоке пользовательского интерфейса сразу после того, как onResume()
вернется, чтобы я мог отображать AlertDialog
, кроме использования onPostExecute()
от AsyncTask
, который должен быть возвращен до того, как он отобразит любое графическое диалоговое окно/Toast from мои тесты, которых я не могу.
Я много часов пробовал такие вещи, как OnGlobalLayoutListener
, Runnable
и AsyncTask
, но теперь я понимаю, что ни один из них не может работать по разным причинам, и у меня нет идей.
Edit: Код
@Override
protected void onResume()
{
super.onResume();
MessageQueue.IdleHandler h = new MessageQueue.IdleHandler()
{
@Override
public boolean queueIdle()
{
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(getBaseContext());
dlgAlert.setMessage("This is an alert with no consequence");
dlgAlert.setTitle("App Title");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();
return true;
}
};
this.getMainLooper().myQueue().addIdleHandler(h);
}
5s загрузить вид ... Я надеюсь, что вы не делаете это на UI тему. Вы можете попробовать вызвать метод runOnUIThread прямо перед возвратом onResume. –
пытался использовать 'Handler' в' onResume'? – pskink
@ KamenStoykov благодарит за ваш ответ; Я попробовал 'runOnUIThread' прямо перед' onResume() ', но пользовательский интерфейс все еще не отображается в момент запуска моего метода. Я попробую «Handler» позже, когда я получу шанс. –