1

Blackberry アプリケーションで代替エントリポイントをセットアップする方法。2 つのアプリケーションがあります。

  1. UI アプリケーション
  2. バックグラウンド アプリケーション: 自動起動時に実行されます。

これに関する Blackberry ナレッジ センターの記事があり、私はそれを試し、次のようにコーディングしました。しかし、アプリケーションのアイコンをクリックしても反応がありません。

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 に答える