BlackBerry - Невозможно запустить запущенное приложение на передний план.

У меня есть приложение пользовательского интерфейса, которое настроено на автозапуск при запуске, которое порождает несколько потоков, выполняющих некоторую работу в фоновом режиме. Он имеет один экран, на котором отображается информация о работе, выполняемой фоновыми потоками.

class AppName extends UiApplication implements SystemListener2 {
    private static AppName app;

    public static void main(String[] args) {
        app = new AppName();

        if (ApplicationManager.getApplicationManager().inStartup()) {
            app.addSystemListener(app);
        } else {
            app.initializeLater();
        }
        app.enterEventDispatcher();
    }

    public AppName() {
        pushScreen(new InfoScreen());
        requestBackground();
    }

    private void initialize() {
        // Spawns some threads doing work in the background
    }

    private void initializeLater() {
        invokeLater(new Runnable() {
            public void run() {
                initialize();
            }
        });
    }

    public void powerUp() {
        removeSystemListener(this);
        initialize();
    }
}

Когда я запускаю приложение в симуляторе, оно работает нормально. При запуске все запускается, а затем, когда я щелкаю значок, экран выводится на передний план и отображается. Это результат симулятора:

3:20:26.612: AM: Starting AppName
3:20:26.612: AM: AppName already running
3:20:26.612: AM: Foreground is requested: AppName(304)
3:20:26.628: AM: Foreground is set: AppName(304)

Однако на устройстве экран никогда не отображается. Это вывод отладчика устройства:

[0.0] Starting AppName
[0.0] AppName already running

Как видите, запрос переднего плана никогда не выполняется. Я подтвердил это, переопределив метод UiApplication.activate () и вставив сообщение System.out, чтобы узнать, вызывается ли он, но не вызывается.

Кто-нибудь знает, почему это происходит?


person ruiseal    schedule 16.12.2011    source источник
comment
где вы вызываете requestForeground?   -  person Tamar    schedule 17.12.2011


Ответы (1)


попробуйте использовать это

UiApplication.getUiApplication().invokeAndWait(new Runnable() {
    public void run() {
        UiApplication.getUiApplication().requestForeground();
    });
}
person sagar    schedule 19.12.2011
comment
Спасибо, но в итоге проблема возникла в самом устройстве. Код в порядке. - person ruiseal; 23.12.2011