[英]When is Applet.stop() called?
我使用Eclipse及其Applet Viewer對applet進行了實驗。 Applet Viewer出現在Eclipse的頂部,在執行Applet的過程中,我單擊Eclipse圖標以從任務欄中最大化它。 然后,Applet Viewer失去焦點,並Applet.stop()
。
當我最小化Eclipse時,Applet Viewer再次回到最前面,獲得焦點,並Applet.start()
。 最終陷入一片混亂。
用戶更改到另一個選項卡或最小化瀏覽器后,瀏覽器調用Applet.stop
是正常行為嗎?我可以禁用該功能,我希望從不stop
調用。
也許我在線程中丟失了一些東西。
我的代碼是這樣的:
public class AppletApp extends JApplet {
public void init() {
super.init();
System.out.println("AppletApp.init()");
}
public void start() {
System.out.println("AppletApp.start()");
try {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
getContentPane().add(new JLabel("Test Label"));
}
});
} catch (InterruptedException e) {
} catch (InvocationTargetException e) {}
Runnable runnable = new Runnable() {
@Override
public void run() {
//For DJ Browser Component
NativeSwing.initialize();
NativeInterface.open();
//connect to server and start message exchange
Client.init(userInterface);
userInterface.authenticate();
NativeInterface.runEventPump();
}
};
Thread t = new Thread(runnable);
t.start();
}
public void stop() {
System.out.println("AppletApp.stop()");
}
public void destroy() {
System.out.println("AppletApp.destroy()");
}
}
用戶更改到另一個選項卡或最小化瀏覽器后,瀏覽器調用Applet.stop是正常行為嗎?
是的,這很正常。 從javadoc:
由瀏覽器或applet查看器調用,以通知此applet應該停止執行。 當包含此applet的Web頁面已被另一個頁面替換時,並且正要銷毀applet之前,將調用此方法。
當您切換選項卡時,我認為包含的網頁已被替換,因此邏輯上調用stop()
是合理的。
我可以禁用它嗎,我想永遠都不要叫停。
不,您不能,您無法控制。 但是,您可以依賴init()
和destroy()
方法,而不是start()
和stop()
。 start()
和stop()
用於恢復/暫停任何消耗資源的內容,這些資源在不可見的情況下是不必要的(例如,動畫在不可見的情況下是沒有意義的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.