Где разместить код запуска на основе графического интерфейса в приложении Blackberry? - PullRequest
2 голосов
/ 19 июня 2009

Я хотел бы знать, где разместить последовательный код запуска на основе графического интерфейса в моем приложении Blackberry.

In main(), I create MyApp and enterEventDispatcher()
I have UiApplication (MyApp)
In the MyApp CTOR:
- I create a MainScreen (MyMain)
- I call pushScreen() on MyMain

Когда диспетчер событий запускается, есть ли событие, которое я могу прослушать на своем главном экране, который даст мне поток событий, где я могу с удовольствием выполнять синхронные задачи запуска?

Я могу использовать invokeLater (), но я хочу, чтобы каждый вызов блокировался, потому что их порядок важен на этом этапе. invokeAndWait () вызывает исключение в большинстве случаев, когда я пытался его использовать.

Я попытался выполнить приведенный ниже код, но у меня возникла исключительная ситуация при попытке запустить строку «Тестирование 1 2 3».

    public class MyApp extends UiApplication {

        static public void main(String[] args) {
            new MyApp().enterEventDispatcher();
        }

        public MyApp()
        {
            MyView theView = new MyView();
            theView.startUpdateTimer();
            pushScreen(theView);

            Dialog.alert("Testing 1 2 3");
        }
    }

1 Ответ

1 голос
/ 19 июня 2009

Если это довольно быстрый пользовательский интерфейс (создание экрана, помещение его в стек), сделайте это из основного потока перед вызовом enterEventDispatcher. На самом деле вы можете делать столько, сколько захотите, просто пользовательский интерфейс будет хуже, если ваше приложение займет много времени.

Поток, который вызывает enterEventDispatcher, в основном становится потоком диспетчеризации событий, поэтому вы можете безопасно выполнять какие-либо действия в этом потоке перед вызовом enterEventDispatcher.

В частности, не вызывайте invokeAndWait из основного потока - это вызовет взаимоблокировку и, возможно, исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...