2010-07-08 46 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