繁体   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