5

ブラウザのページ内でアプレットを実行しているとします。ユーザーがブラウザを閉じるとどうなりますか?

アプレット側である種のクローズ アクション (サーバーに対して開かれている接続のクローズ、静的変数のクリーニングなど) を実行できるように通知されますか?

また、ページの更新またはページのナビゲーション (ブラウザーを閉じる代わりに) にも同じ動作が適用されると思います。ブラウザは開いたままですが、アプレットは消えています。ただし、ブラウザーを閉じると JVM も閉じられるため、現時点ではわかりません。

ありがとう、JB

4

2 に答える 2

2

はい、ブラウザがオブジェクトをアンロードする前にdestroy() メソッドを呼び出す必要があります。

destroy()は、Java アプレットの 4 つの「ライフサイクル メソッド」の最後です(他はinit()start()、およびstop()です)。実際には、ブラウザ仮想マシンに応じて異なるタイミングで呼び出されます。各メソッドがいつ呼び出されるかを正確に知りたい場合は、アプレット内に各メソッドを実装し、フィードバックを System.out してください。

理想的には、 destroy() はenvironment によって呼び出され、一度だけ呼び出される必要があります。destroy() が呼び出されていないように見える場合は、destroy を呼び出す public finalize() メソッドを宣言できます。ウィンドウ オブジェクトのアンロード時に、javascript から destroy() を呼び出すこともできますが、不必要に destroy() を呼び出さないように注意してください。

public void finalize () {
    destroy();
}
于 2008-10-30T09:17:54.753 に答える
1

ほとんどの場合、destroy が呼び出されますが、ウィンドウを閉じる場合に必要なタスクを実行するのに十分な時間がありません。

Backword <- と Forward -> でナビゲートし、更新すると十分な時間が得られます。

于 2008-11-18T14:04:07.123 に答える