2009-06-19 4 views
2

Я хотел бы знать подходящее место для ввода последовательного кода запуска на основе графического интерфейса пользователя в приложении Blackberry.Где разместить начальный код на основе графического интерфейса пользователя в приложении 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

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

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

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

+0

Будет ли пользовательский интерфейс * работать * до вызова enterEventDispatcher? Т.е. я могу делать интерактивные вещи UI? например. Чтобы уточнить, допустим, я хочу спросить пользователя, хочет ли он включить функцию X. Могу ли я сказать Dialog.ask() в основном, получить ответ, внести коррективы в мои настройки, все до вызова enterEventDispatcher? В противном случае, я предполагаю, что я просто запускаю вещи, которые нужно запустить после запуска диспетчера. –

+0

Я попробовал Dialog.alert() в основном. Как и ожидалось, я получаю исключение IllegalStateException. Argh. Полагаю, я мог бы свернуть весь мой код запуска в invokeLater, но я хотел бы знать, может ли это сделать RIM. –

 Смежные вопросы

  • Нет связанных вопросов^_^