11

javadocチュートリアルには、4つのアプレットライフサイクルメソッドに関する情報があります(init() -> start() -> stop() -> destroy())。しかし、彼らは主に抽象的な言語で話します。

私が探しているのは、コードをinitvsに入れた場合start、および同様にdestroyvsに入れた場合に、違いが生じる場合の具体的な例ですstop。私がこれまでに見つけた唯一のことは、チュートリアルのdestroyメソッドの説明にあります。それは言う:

注:このメソッドが完全に実行される保証はないため、destroyメソッドの実装はできるだけ短くしてください。長いdestroyメソッドが完了する前に、Java仮想マシンが終了する場合があります。

(上記がjavadocにないことに少しショックを受けました。)

編集:より具体的に:特定のアクション(タブの切り替え、「戻る」ボタンの押下など)の際に、呼び出すstopが呼び出さないdestroy(または呼び出さstartないinit)ブラウザーとJVMの組み合わせを提供できる人はいますか?

4

2 に答える 2

15

initアプレットがロードまたはアンロードされるときにdestroyそれぞれ呼び出されます。ブラウザがアプレットをロードして停止することは可能ですが、ナビゲートしたり、タブを切り替えたりするときに、アプレットを破棄することはできません。

startstop上記の場合(アプレットがページに表示されるようになったとき、または表示されなくなったとき)、アプレットを一時停止および再開するためのものです。

ブラウザが実際にアプレットをロードしたままにしているかどうかはわかりませんので、それほど重要ではないかもしれません。しかし、私がそれを学んだ限り、一般的なルールは次のとおりです。

  • initアプレットを実行する準備ができているはずですが、実際には動かないようにする必要があります。アプレットは、から戻ったときに「停止」状態になっている必要がありますinit。(停止したアプレットは、実際に可能な限り少ないリソースを使用し、CPUを使用しないようにする必要があります。)
  • startアプレットの実行を開始する必要があります(スレッドの開始など)。通常、パラメータを読み取ったり、画像を再読み込みしたりすることはありません。これは、で行う必要がありますinit
  • stop何をするかを元に戻す必要startがあります...アプレットを「停止」状態に戻しますが、start再びできるようにしておきます。init機能が適切に分離されているとアプレットが起動できなくなるため、の作業を元に戻すことはできません。
  • destroyアプレットがアンロードされる前に、最終的なクリーンアップを実行する必要があります。基本的に元に戻しinitます。アプレットを停止するべきではありません。それはstopの仕事であり、destroyが呼び出される前にすでに実行されている必要があります。
于 2010-09-07T19:03:03.850 に答える
1

実際には、とはアプレットのあるページが表示されるたびに呼び出されることを意図していたstart()と思います(たとえば、ブラウザの[戻る]ボタンと[進む]ボタンを使用して) 。stop()init()destroy()

アプレットを書いてから約15年になるので、覚えていないかもしれません。

于 2010-09-07T18:57:24.907 に答える