2011-12-16 1 views
0

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

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

+0

где вы звоните requestForeground? – Tamar

ответ

0

попробовать с помощью этого

UiApplication.getUiApplication().invokeAndWait(new Runnable() { 
    public void run() { 
     UiApplication.getUiApplication().requestForeground(); 
    }); 
} 
+0

Спасибо, но в итоге возникла проблема с самим устройством. Код в порядке. – ruiseal