4

驚いたことに、ミドルを終了することは私のアプリケーションでは機能しません。スレッドを使用しているためかもしれませんが、十分ではありませんdestroyApp()notifyDestroyed()

たとえば、次のコードを考えてみましょう。

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
    System.out.println("destroying");
    notifyDestroyed();
}
protected void startApp() throws MIDletStateChangeException {
   try {
        // init modules
        controller.initialize();
    }catch (Exception e) {
        viewer.showAlert("error in startApp() init controller");
        destroyApp(true);
    }

}

4

2 に答える 2

2

notifyDestroyed()具体的には内部から呼び出していstartApp()ます。

私の最善の推測は、これを試している受話器(またはエミュレーター)はそれをうまく処理できないということです。

代わりにこれを試してください:

  • controller.initialize()例外をスローするときはForm、単一​​の「Exit」CommandStringItemエラーメッセージを含む単純なものを表示します。

  • コールバックnotifyDestroyed()から呼び出しCommandListener.commandAction()ます。

スレッドに関する限り、ユーザーがアプリケーションを終了したいときにスレッドを適切に終了させるのはあなた次第です。

ほとんどのMIDPランタイムは、正常に終了しない一部のスレッドを処理できますが、システムリソースを適切にクリーンアップしないままにしておくと、特にJava仮想マシンプロセス自体を決して終了しようとしないプラットフォームで問題が発生する可能性があります。

于 2010-04-26T15:04:36.310 に答える
0

アプリケーションを終了するには、「destroyApp」メソッドではなく、「notifyDestroyed」メソッドを呼び出す必要があります。

于 2010-04-26T06:02:19.303 に答える