我有一个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消息来确认它是否被调用但是没有被调用。
有谁知道为什么会这样?