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 開発の初心者です。以下の環境で開発しています。

  • BlackBerry JDE Eclipse プラグイン 1.5.0
  • ブラックベリー OS 4.5
4

2 に答える 2

5

自動起動アプリケーションは、OSの起動が完了する前に実行されるため、ユーザーインターフェイスはサポートされていません。アプリケーションは起動されているが、一部のUI呼び出しで失敗していると思われます。自動実行してホーム画面から実行するアプリケーションを作成するための文書化された方法は、自動実行されたことをプログラムに通知する引数を使用して、自動実行の代替エントリポイントを提供することです。次に、APIを使用して、OSが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());
    }
}
于 2012-06-27T12:28:46.230 に答える
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 要素を表示する必要があり、それがここで行っていることです。

于 2012-07-23T11:57:25.333 に答える