2011-12-16 52 views
0

我有一个UI应用程序设置为自动运行在启动时产生一些线程在后台执行一些工作。它有一个屏幕,显示有关后台线程正在进行的工作的信息。黑莓 - 无法前台运行的应用程序

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 2011-12-16 21:01:20

回答

0

尝试使用此

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

谢谢,但最终成为设备本身的问题。代码很好。 – ruiseal 2011-12-23 11:18:22