2012-06-27 87 views
6

我想創建一個後臺應用程序,它將在系統啓動時運行。當我手動(從功能區)運行它時,會出現屏幕,但是當我將它作爲啓動應用程序(描述符中的啓動時自動運行選項)後運行應用程序時,屏幕上不會顯示任何內容。我正在嘗試下面的代碼;黑莓應用程序:屏幕不顯示在自動運行模式

public class AppClass extends UiApplication { 

    public static void main(String[] args) { 
     AppClass theApp = new AppClass(); 
     theApp.enterEventDispatcher(); 
    } 

    public AppClass() { 
     pushScreen(new AppScreen()); 
    } 
} 

而這是屏幕類;

public final class AppScreen extends MainScreen { 

    private LabelField label; 

    public AppScreen() { 
     setTitle("AppTitle"); 

     label = new LabelField(); 
     label.setText("Ready."); 

     add(label); 
    } 
} 

我期待它的UI應用程序,所以它的屏幕應該是可見無論是在啓動時自動運行或者手動運行。如果我需要做一些事情使其按預期工作,請指導我,我是BlackBerry開發的新手。 我在以下環境中開發;

  • 黑莓JDE Eclipse插件1.5.0
  • 的BlackBerry OS 4.5

回答

2

呼叫getApplication().requestForeground();從AppScreen類的構造函數,這樣你的屏幕將是可見的。

public final class AppScreen extends MainScreen { 

    private LabelField label; 

    public AppScreen() { 
     setTitle("AppTitle"); 

     label = new LabelField(); 
     label.setText("Ready."); 

     add(label); 

     getApplication().requestForeground(); 
    } 
} 

一旦應用程序在後臺運行,我們必須把它明確前景展現UI元素,這就是我們正在做的事情。

5

自動啓動OS引導結束之前,所以沒有用戶界面的任何支持的應用程序運行。我懷疑你的應用程序正在啓動,但在某些UI調用中失敗。編寫自動運行並從主屏幕運行的應用程序的文檔化方式是爲自動運行提供一個交替的入口點,其參數告訴程序自動運行。然後使用API​​等待操作系統準備好用於UI應用程序。

public class AppClass extends UiApplication { 
    public static void main(String[] args) { 

     if (args.length > 0 && args[0].equals("auto-run")) { 
      // auto start, wait for OS 
      while (ApplicationManager.getApplicationManager().inStartup()) { 
       Thread.sleep(10000); 
      } 

      /* 
      ** Do auto-run UI stuff here 
      */ 
     } else { 
      AppClass theApp = new AppClass(); 
      theApp.enterEventDispatcher(); 
     } 
    } 

    public AppClass() { 
     pushScreen(new AppScreen()); 
    } 
} 
+0

謝謝先生。讓我試試看。 – Mudassir