在Linux上运行的Java Swing桌面应用程序(例如,Ubuntu)中,如何通知应用程序PC刚刚从睡眠/暂停/休眠状态恢复?
屏幕消隐不是问题。所有其他暂停或休眠状态(暂停到RAM或暂停到磁盘)都是有意义的(为了我的目的,它们都将被视为相同)。
我的目标是在PC或设备恢复时自动调用类方法。 (该方法需要重启rxtxSerial,fwiw。)
编辑:ThorbjørnRavnAndersen的评论让我意识到我的问题不明确。我的目标是监听一个操作系统事件(或利用系统日志文件),该事件表明系统刚从暂停状态恢复。答案 0 :(得分:3)
让守护程序线程读取系统时间,比如每秒一次。如果两个读数之间存在(明显的)差距,则系统刚刚醒来。但是,不确定这是否会阻止系统首先进入睡眠状态。
答案 1 :(得分:0)
据我所知,默认的Java运行时中没有提供此类信息的类,而且据我所知 - 没有标准的方法可以告诉这些信息。
我建议您弄清楚如何从操作系统获取所需信息 - 例如每次系统更改挂起状态时都可以安装并运行的脚本 - 让脚本/本机二进制文件向您的Java程序发送消息(或将文件放在商定的位置)。
考虑到Linux机器是多用户系统,并且您的程序可能会被多次调用,因此您在设计机制时应该小心谨慎。
出于好奇,为什么你的程序需要知道?
答案 2 :(得分:0)
以下是Canonical支持工程师的建议。
20/11/2011 22:53 |贾森 我的建议是在/etc/pm/sleep.d/下创建一个脚本。从暂停恢复时将执行该脚本。有关详细信息,请参阅/usr/share/doc/pm-utils/HOWTO.hooks.gz。
以下是该文件的介绍:
如何编写pm-utils钩子:
参数
pm-utils钩子只是一个可接受至少一个的可执行文件 参数。
对于sleep.d中的钩子,第一个参数的潜在值是:
suspend - 钩子必须执行任何适当的动作 系统正准备记忆睡眠(或其等效物)。
resume - 钩子必须执行任何适当的动作 系统即将暂停。
hibernate - 钩子必须执行任何适当的动作 系统正准备暂停磁盘。
解冻 - 钩子必须执行系统时适当的任何动作 正在暂停到磁盘。
help - 如果你的钩子解析了交换机的PM_CMDLINE环境变量, 这个函数应该输出描述它解析的参数的文本 以最终用户易于理解的格式。
正在使用的实际睡眠方法将作为第二个参数传递 - 如果你的钩子需要处理suspend-hybrid(或任何其他特定于平台的) 睡眠方法),它应检查第二个参数。
对于power.d中的钩子,该参数的潜在值为: true - 钩子必须执行系统时适当的任何操作 过渡到电池电量。 false - 钩子必须执行系统时适当的任何操作 从电池电源转换。
这是一个例子:
#!/bin/bash
case "$1" in
hibernate|suspend)
ACTION BEFORE SUSPEND/HIBERNATE
;;
thaw|resume)
ACTION AFTER RESUME
;;
*)
;;
esac
exit $?