1

次の onClose() メソッドを持つ画面に固有のすべての画面:

    public boolean onClose()
    {
        Dialog.alert("Closing");
        done = true;
        System.exit(0);

        return true;
    }

System.exit(0); だと思いました。実際に私のアプリケーションを殺します。

赤いボタンを押して完全に終了すると、「閉じる」ダイアログ メッセージが正常に表示されます。戻るボタンを何度も押しても同じです。しかし、「閉じる」ダイアログが表示されたとしても、「アプリケーションの切り替え」を選択すると、アプリケーションがバックグラウンドで実行されていることがわかります。

それだけでなく、スレッドを実行している場合、アプリケーションを終了した後もスレッドが進行していることがわかります (これが、完了変数を設定して、done が true の場合にスレッドが自動的に中止されるようにする理由です)。

それに加えて、アプリケーションがクラッシュした場合、アプリケーションを完全に終了できたとしても、ダイアログ メッセージは表示されません。クラッシュした後にアプリケーションを再クリックしようとしても、リロードしません。これまで。その状況を優雅に処理する方法はありますか?(明らかに、発見したすべての問題に対してエラー処理を提供しましたが、実際に何かが発生した場合、少なくともアプリケーションがメモリを消費し続けないようにしたいと考えています)

Blackberry アプリは決して閉じないのですか? 私は何か間違ったことをしていますか?今すぐアプリケーションの実行を停止したい場合は、アプリケーションを完全に削除して再インストールする必要があります!

4

2 に答える 2

2

net.rim.device.api.ui.Screen (MainScreen やその他の Screen の子ではない) を拡張している場合は、具体的に DEFAULT_CLOSE スタイルを設定するか、画面を閉じる必要があるときに close() を呼び出す同様のものを実装する必要があります。 API ドキュメント:

public boolean onClose()

Indicates a close event has occurred.

The default implementation is activated by specifying DEFAULT_CLOSE. It will call onSavePrompt() if the screen is dirty, then call close() if successful.

Returns:
    True if the screen closes; otherwise, false.
Since:
    JDE 3.6.0

System.exit(0) を呼び出すと、アプリが終了するはずですが、スレッドが終了し、画面が正常に閉じられるようにするために、実装にホールドオフがある場合があります。blackberry GUI アプリケーションが終了する通常の方法は、最後の画面がディスプレイ スタックからポップされたときです。これは、close() が呼び出されたときに発生します。

于 2009-10-15T18:46:29.363 に答える
1

彼が以下であなたのオーバーライドではないと言わない限り、電話をSystem.exit(0);かけないでくださいsuper.onClose();MainScreen

于 2009-10-15T20:38:50.083 に答える