加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:33:31 所属栏目:百科 来源:网络整理
导读:检测用户何时空闲X时间,然后检测用户何时立即处于活动状态的最佳方法是什么? 我知道有NSWorkspace提供将要/做睡眠/唤醒通知,但我不能依赖它,因为睡眠设置通常约为15分钟.我需要能够检测用户是否闲置了大约1-2分钟. 这个answer提供了一种获取空闲时间的方法.
检测用户何时空闲X时间,然后检测用户何时立即处于活动状态的最佳方法是什么?

我知道有NSWorkspace提供将要/做睡眠/唤醒通知,但我不能依赖它,因为睡眠设置通常约为15分钟.我需要能够检测用户是否闲置了大约1-2分钟.

这个answer提供了一种获取空闲时间的方法.如果可能的话,我想避免投票.

解决方法

据我所知,轮询是你唯一的选择.当用户1118321指出时,每O(分钟)轮询不太可能导致任何问题,性能或其他问题.

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

一旦确定用户空闲时间足够长,您就可以安装全局事件点击以观察下一个事件.请参阅 – [NSEvent addGlobalMonitorForEventsMatchingMask:handler:].

注意:如果可能的话,应该使用CGEventSourceSecondsSinceLastEventType而不是戳到IO注册表.它是一个正式的,受支持的API,可能更有效.更不用说它更简单了.虽然它依赖于Carbon,但也有UKIdleTimer,因此可能不适用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读