gpt4 book ai didi

objective-c - 用户在 OS X 上闲置后的通知?

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:21 24 4
gpt4 key购买 nike

检测用户何时空闲了 X 时间,然后检测用户何时立即活跃的最佳方法是什么?

我知道有 NSWorkspace 提供 will/did sleep /唤醒通知,但我不能依赖它,因为 sleep 设置通常约为 15 分钟到从不。我需要能够检测用户是否闲置了约 1-2 分钟。

answer提供了一种获取空闲时间的方法。如果可能,我想避免轮询。

最佳答案

据我所知,轮询是您唯一的选择。正如 user1118321 指出的那样,每隔 O(分钟)轮询一次不太可能导致任何问题、性能或其他问题。

如果您的应用程序有一个 GUI 并且无论如何都会接收 UI 事件,您可以通过 +[NSEvent addLocalMonitorForEventsMatchingMask:handler:] 安装一个处理程序,它会在每个事件上重置您的计时器。当用户始终处于活跃状态时,至少在您自己的应用中,这将有助于减少甚至消除民意调查。

一旦您确定用户已经闲置了足够长的时间,您就可以安装一个全局事件点击来监视下一个事件。参见示例 -[NSEvent addGlobalMonitorForEventsMatchingMask:handler:]

注意:你应该使用CGEventSourceSecondsSinceLastEventType如果可能的话,而不是戳入 IO 注册表。它是一个正式的、受支持的 API,并且可能更高效。更不用说它更简单了。还有 UKIdleTimer尽管它依赖于 Carbon,因此可能不适用。

关于objective-c - 用户在 OS X 上闲置后的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13426428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com