2010-07-08 42 views
0

我有一个Listener类实现ViewListener(包含两个方法,打开,关闭,当任何受监视的邮箱的电子邮件打开/关闭时会触发)。因此,这是从扩展UiApplication的类App调用的,当我读取电子邮件时,打开方法被触发,我想用特定屏幕调用我的原始(App类)(发送消息给应用程序就足够好了) 。目前我拥有它,以便App有一个静态变量,用于存储设备上运行的应用程序的实例。我用它来调用一个方法来改变屏幕,但它实际上并没有提出。 app.requestForeground()似乎也不起作用。如何从听众控制gui

任何想法?

非常感谢!

回答

0

您是否尝试过使用ApplicationManager来处理这个问题?如果您有一个后台系统进程监听事件,那么您的GUI进程甚至可能不运行(即,如果您执行了System.exit(0)而不是后台进程)。下面是一个代码片段,你可以用它来寻找在GUI程序(基于其应用程序描述符),要么把它带到前台(如果它运行),或启动它(如果它不是):

// Check if app is already running 
ApplicationDescriptor descriptor = [descriptor for your GUI entrypoint]; 
ApplicationManager appManager = ApplicationManager.getApplicationManager(); 
int pid = appManager.getProcessId(descriptor); 
if (pid != -1) { 
    // App is running, bring it to the foreground 
    appManager.requestForeground(pid); 
} else { 
    // App is not running, so launch it 
    try { 
     appManager.runApplication(descriptor); 
    } catch (ApplicationManagerException e) { 
     // Can't launch 
    } 
} 

要获取应用程序描述符的GUI切入点,使用下面的方法:

  1. 获取使用CodeModuleManager.getModuleHandleForClass(MyApp.class)
  2. 获取应用程序描述符列表使用CodeModuleManager.getApplicationDescriptors(handle)
  3. 检查每个DES标志手柄模块句柄直到你发现一个等于“0”。这意味着它不是系统/自动启动/启动时启动描述符 - 可能是您的GUI入口点。
+0

一个问题,gui入口点的描述符是什么/哪里? – FurtiveFelon 2010-07-08 19:19:57

+0

我编辑了包含该信息的答案 – 2010-07-08 19:55:46