1

如何在黑莓应用程序中设置备用入口点。将有 2 个应用程序

  1. 用户界面应用
  2. 后台应用程序:将在自动启动时运行。

有一篇关于这个的黑莓知识中心文章,我试过了,编码如下。但是单击应用程序图标时,没有任何反应。

class EntryPointForApplication extends UiApplication {
    public EntryPointForApplication() { 
        GUIApplication scr = new GUIApplication(); 
        pushScreen(scr);         
    } 

    public static void main(String[] args) { 

        if ( args != null && args.length > 0 && args[0].equals("background1") ){
            // Keep this instance around for rendering
            // Notification dialogs.
            BackgroundApplication backApp=new BackgroundApplication();
            backApp.enterEventDispatcher();
            backApp.setupBackgroundApplication();   

       } else {       
        // Start a new app instance for GUI operations.     
         EntryPointForApplication application = new EntryPointForApplication(); 
           application.enterEventDispatcher();         
       }        
    }   
}

类 UI 应用程序

class GUIApplication extends MainScreen {   
    public GUIApplication(){        
        add(new LabelField("Hello World"));             
    } 
}

后台应用

class BackgroundApplication extends Application {   
    public BackgroundApplication() {
        // TODO Auto-generated constructor stub
    }
    public void setupBackgroundApplication(){

    }   
}

我根据这个(编辑)坏链接
配置了 Blackberry_App_Discriptor.xml任何机构都可以帮忙,哪里出错了。

4

1 回答 1

4

尝试记录 args 的值和(如果不是 null)args[0] 以查看实际传递给 main() 的内容。后台模块未传递参数(或未传递正确值)的编译过程可能存在问题。

此外,尝试将您的 EntryPointForApplication 实例保存到静态变量中,以便它维护一个引用(不是垃圾收集),并且如果在它已经运行时再次从主屏幕单击该图标,您不会启动多个实例您的应用程序。例如:

class EntryPointForApplication extends UiApplication {

    private static EntryPointForApplication theApp;

    public EntryPointForApplication() { 
        GUIApplication scr = new GUIApplication(); 
        pushScreen(scr);         
    } 

    public static void main(String[] args) { 

        if ( args != null && args.length > 0 && args[0].equals("background1") ){
            // Keep this instance around for rendering
            // Notification dialogs.
            BackgroundApplication backApp=new BackgroundApplication();
            backApp.setupBackgroundApplication();   
            backApp.enterEventDispatcher();
       } else {       
         if (theApp == null) {
             // Start a new app instance for GUI operations.     
             theApp = new EntryPointForApplication();
             theApp.enterEventDispatcher();         
         } 
       }        
    }   
}
于 2010-10-13T05:56:37.760 回答