当前位置: 首页 > 面试题库 >

Java:处理Windows和Linux上的注销或关闭

班昱
2023-03-14
问题内容

除了使用JNI,Java
GUI应用程序还可以响应系统关闭或注销事件吗?(在Windows上,JNI将在Linux上使用WM_QUERYENDSESSION吗?)

该方法应允许程序提示用户进行保存等,然后继续注销过程。


问题答案:

据我所知,Java中没有办法捕获系统关闭或注销事件。

但是,您可以通过添加shutdown
hook来
捕获JVM何时终止。

AWT的WindowAdapter还具有一个windowClosing事件,您可以覆盖该事件并挂钩到要监视的窗口。Swing继承了这一点;我相信SWT也是如此。请注意,如果您覆盖此事件,则必须手动处理该窗口!

我相信MS Windows将在关闭时触发这些事件。我相信Linux /
UNIX上的SIGTERM也可以做到这一点,尽管Linux在关闭期间会在短时间内对应用程序进行SIGKILL。



 类似资料:
  • 4.2.4注销处理 logout元素通过导航到特定URL添加了对注销的支持。默认的注销URL是/logout,但是您可以使用logout-url属性将其设置为其他内容。有关其他可用属性的更多信息可以在命名空间附录中找到。 但是,在遵循文档中的安全设置后,URL/logout不会显示注销页面。相反,它显示 Spring Framework 4.1.6 Spring Security 4.0.0 we

  • 问题内容: 这段代码在linux上执行,但是抛出AttributeError:类型对象“ T”在Windows上没有属性“ val”,为什么? 问题答案: Windows缺少系统调用,该系统调用重复了当前过程。这有很多含义,包括Windows多处理文档页面上列出的含义。进一步来说: 请记住,如果在子进程中运行的代码尝试访问全局变量,则它看到的值(如果有)可能与调用Process.start时父进程

  • 问题内容: 在64位Debian Linux 6上: 在64位Windows 7上: 两种操作系统都是64位的。根据Wikipedia的介绍,它们具有sys.maxunicode。unicode中有1,114,112个代码点。Windows上的sys.maxunicode错误吗? 为什么它们具有不同的sys.maxint? 问题答案: 我不知道您的问题是什么,但 在Windows上没有 错 。 见

  • 我已经从Linux(Ubuntu)迁移到Mac OS。我用Java(swing)编写了一个应用程序。我已经成功地运行了同样的代码在windows和linux但在mac os我有一些问题。 下面是注释中的代码和问题: 另一个: 我当然编不出来。 Java版本:Ubuntu: java版本“1.7.0_07”java(TM)SE运行时环境(build 1.7.0_07-B10)java HotSpot

  • 当用户退出我的应用程序并且我不再希望他接收到设备通知时,我如何处理这种情况。 我试过了 但我仍然会收到设备注册id的通知。 我还确保这是我应该删除的令牌: 或者干脆)。 我还尝试了,但下一次调用时,我收到空值(在第二次尝试时有效)。 我想,在之后,我可以立即再次调用,但这看起来像是一个黑客。还有一个答案是不应该这样做,但它建议删除显然不起作用的令牌。 那么,正确的处理方法是什么呢?

  • 主机系统为ARCHLinux。我想开发需要运行Windows docker容器的.NET4.6.1应用程序。所以我在VirtualBox下运行Win10。然后我在Win10中安装Docker,以运行Windows Docker容器。Linux->VirtualBox->Win10->Docker->Windows Docker容器->要运行的应用程序。 或者更具体地说,VirtualBox是否支持