Applet-Lebenszyklus: was ist der praktische Unterschied zwischen init() & start () - und destroy() & stop()?
Den javadoc und tutorial Informationen über die vier applet-lifecycle-Methoden (init() -> start() -> stop() -> destroy()
). Aber Sie sprechen meist in der abstrakten Sprache.
Was ich Suche, sind konkrete Beispiele dafür, Wann macht es einen Unterschied, wenn ich meinen code in init
vs start
, und ähnlich für destroy
vs stop
. Das einzige was ich bisher gefunden habe, ist in der tutorial-Beschreibung der destroy
Methode. Es sagt:
Hinweis: Halten Sie die Implementierungen der
destroy-Methode so kurz wie möglich,
denn es gibt keine Garantie, dass
diese Methode wird komplett
ausgeführt. Die Java Virtual Machine
vielleicht beenden, bevor eine lange zerstören
Methode abgeschlossen ist.
(Ich bin ein bisschen schockiert, dass das obige ist nicht in der javadoc.)
Edit: um genauer zu sein: wer Kann liefern einem browser + JVM-combo, die, auf einige spezifische Maßnahmen (Wechsel der tabs, das schlagen der Schaltfläche "zurück", usw.), ruft stop
aber nicht destroy
(oder start
aber nicht init
)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
init
unddestroy
werden aufgerufen, wenn das applet geladen oder entladen wird, jeweils. Es ist möglich für einen browser und laden Sie ein applet, und es aufhalten, aber nicht zerstören es, wenn die Navigation um, Wechsel der tabs, etc.start
undstop
sind für das unterbrechen und fortsetzen des applet, im obigen Fall (wenn das applet wird, oder aufhört zu sein, dargestellt auf einer Seite).Ich weiß nicht, ob jeder browser eigentlich nicht halten ein applet geladen, so kann es auch nicht so wichtig. Aber soweit ich es gelernt habe, ist die Allgemeine Regel:
init
sollte sich das applet zur Ausführung bereit, aber nicht tatsächlich setzen Sie in Bewegung. Das applet sollte in einem "stopped" Zustand nach der Rückkehr ausinit
. (Ein applet gestoppt werden soll mit so wenigen Ressourcen wie praktisch möglich, und keine CPU.)start
sollte, starten Sie das applet ausgeführt werden (starten von threads, etc). Es in der Regel nicht Lesen, params, und laden Sie Bilder und alles, was, wie getan werden sollte, ininit
.stop
sollten rückgängig machen, wasstart
tut...Rücksendung der applet zu den "stopped" Zustand ist, sondern dass es in der Lage zustart
wieder. Sollte es nicht rückgängig machen voninit
's arbeiten, denn das würde lassen Sie das applet gestartet werden, wenn die Funktionsfähigkeit ordnungsgemäß getrennt.destroy
sollten tun, eine endgültige Bereinigung, bevor das applet entladen wird. Im Grunde machtinit
. Es sollten nicht aufhören, die applet; das iststop
's job, und die sollte schon gemacht werden, bevordestroy
genannt wird.In der Praxis, denke ich, dass
start()
undstop()
wurden bestimmt, um jedes mal aufgerufen, wenn ein applet-Lager-Seite, die angezeigt wurde (beispielsweise über den browser "zurück" und "vorwärts" - Schaltflächen), währendinit()
unddestroy()
wurden nur einmal aufgerufen.Es ist schon über 15 Jahre her, seit ich schrieb ein applet, obwohl, so dass ich könnte falsch erinnern.