簡體   English   中英

什么時候調用Applet.stop()?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM