Приложение BlackBerry: экран не отображается в режиме автозапуска

Я пытаюсь создать фоновое приложение, которое будет запускаться при запуске системы. Когда я запускаю его вручную (с ленты), появляется экран, но когда я запускаю приложение после того, как я делаю его запускаемым приложением (параметр «Автозапуск при запуске» в дескрипторе), на экране ничего не появляется. Я пробую следующий код;

public class AppClass extends UiApplication {

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

    public AppClass() {
        pushScreen(new AppScreen());
    }
}

И это класс экрана;

public final class AppScreen extends MainScreen {

    private LabelField  label;

    public AppScreen() {
        setTitle("AppTitle");

        label = new LabelField();
        label.setText("Ready.");

        add(label);
    }
}

Я ожидаю, что это приложение пользовательского интерфейса, поэтому его экран должен быть виден независимо от того, запускается ли он автоматически при запуске или запускается вручную. Если мне нужно что-то сделать, чтобы он работал должным образом, пожалуйста, расскажите мне об этом, я новичок в разработке BlackBerry. Я развиваюсь в следующей среде;

  • Подключаемый модуль BlackBerry JDE Eclipse 1.5.0
  • BlackBerry OS 4.5

person Mudassir    schedule 27.06.2012    source источник


Ответы (2)


Вызов getApplication (). requestForeground (); из конструктора вашего класса AppScreen, чтобы ваш экран был виден.

public final class AppScreen extends MainScreen {

    private LabelField  label;

    public AppScreen() {
        setTitle("AppTitle");

        label = new LabelField();
        label.setText("Ready.");

        add(label);

        getApplication().requestForeground();
    }
}

Когда приложение работает в фоновом режиме, мы должны явно вывести его на передний план, чтобы показать элемент пользовательского интерфейса, и именно это мы здесь делаем.

person Khan    schedule 23.07.2012

Приложения с автозапуском запускаются до того, как ОС завершит загрузку, поэтому пользовательский интерфейс не поддерживается. Я подозреваю, что ваше приложение запускается, но не работает при вызове пользовательского интерфейса. Документированный способ написать приложение, которое должно автоматически запускаться и запускаться с главного экрана, состоит в том, чтобы предоставить альтернативную точку входа для автоматического запуска с аргументами, которые сообщают программе, что это был автоматический запуск. Затем используйте API, чтобы дождаться, пока ОС будет готова для приложений пользовательского интерфейса.

public class AppClass extends UiApplication {
    public static void main(String[] args) {

        if (args.length > 0 && args[0].equals("auto-run")) {
            // auto start, wait for OS
            while (ApplicationManager.getApplicationManager().inStartup()) {
               Thread.sleep(10000);
            }

            /*
            ** Do auto-run UI stuff here
            */
        } else {
            AppClass theApp = new AppClass();
            theApp.enterEventDispatcher();
        }
    }

    public AppClass() {
        pushScreen(new AppScreen());
    }
}
person Richard    schedule 27.06.2012
comment
Спасибо, сэр. Дай мне попробовать. - person Mudassir; 27.06.2012