loo*_*vis 6 air macos adobe actionscript-3
我有一个用纯AS3编写的Adobe AIR应用程序,它具有一些在用户空闲时发生的功能,然后在用户返回时返回到正常状态.我正在使用以下代码检测此活动:
NativeApplication.nativeApplication.idleThreshold = 180;
NativeApplication.nativeApplication.addEventListener(Event.USER_IDLE, onUserIdle);
NativeApplication.nativeApplication.addEventListener(Event.USER_PRESENT, onUserPresent);
Run Code Online (Sandbox Code Playgroud)
onUserIdle应该在3分钟之后调用该方法,但之后onUserPresent几乎立即触发该事件.我说的是几毫秒之后.这种情况在没有任何用户输入的情况下发生.奇怪的是,这不会发生在Windows上 - 仅在OSX上.它发生在OSX的各种风格上,可以追溯到10.6.3.
Adobe的文档对于如何确定这些事件非常模糊,所以我不确定我是否可以在系统级别做些什么来解决问题.有没有人对此问题有任何经验,如果没有,有关我如何检测用户闲置的任何其他建议,即使应用程序没有焦点?
只是为了抢占这个建议,我不能使用鼠标/键盘监听器来模拟相同的行为,因为如果应用程序失去焦点它们不起作用,而NativeApplication事件仍然会触发.我也习惯NativeProcess得到ioreg的输出以获得系统报告的硬件空闲时间,但它似乎不受鼠标的影响.
我真的很感激任何帮助.
编辑:我刚刚发现当应用程序在OSX上的管理员帐户中运行时不会发生这种情况.它只发生在用户帐户中,这只会让我更加困惑.
我知道问题是什么了。当在用户帐户中触发该USER_IDLE事件时,我们做了几件事 - 其中之一是强行终止 Dock 以确保它在屏幕上隐藏。无论出于何种原因,这都会重置内部可用idleThreshold计数。这种情况不仅发生在 AIR 中,通过终端进行监控时也会发生这种情况,而且似乎完全没有办法阻止它。解决方案是停止杀死码头。之后一切都神奇地发挥了作用。
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |