Как настроить альтернативную точку входа в приложении Blackberry? - PullRequest
1 голос
/ 13 октября 2010

Как настроить альтернативную точку входа в приложении Blackberry. Будет 2 приложения

  1. Приложение пользовательского интерфейса
  2. Фоновое приложение: будет запускаться при автозапуске.

Об этом есть статья центра знаний Blackberry *1000*, которую я попробовал и закодировал следующим образом.Но при нажатии на значок приложения ответ отсутствует.

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();         
       }        
    }   
}

Приложение класса пользовательского интерфейса

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 согласнок этому (редактировать) bad-link
Может ли помочь какой-нибудь орган, где иду не так.

1 Ответ

4 голосов
/ 13 октября 2010

Попробуйте записать значение 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();         
         } 
       }        
    }   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...