用 ACTION USER_PRESENT 替换 ACTION_SCREEN_ON?

Posted

技术标签:

【中文标题】用 ACTION USER_PRESENT 替换 ACTION_SCREEN_ON?【英文标题】:Replacing ACTION_SCREEN_ON withy ACTION_USER_PRESENT? 【发布时间】:2011-11-19 20:15:45 【问题描述】:

我有一个长期运行的服务来监听传感器输入。为了节省电池电量,我在 ACTION_SCREEN_OFF 上停止了传感器的采样,并在 ACTION_SCREEN_ON 上再次启动它。

不过,我通常只是打开手机以快速浏览锁定屏幕上的时钟(以检查当前时间),然后再次关闭手机而不解锁手机。在这种情况下,没有理由启动传感器只是为了立即关闭然后再次关闭。

因此,我尝试在我的广播监听器中将 ACTION_SCREEN_ON 替换为 ACTION_USER_PRESENT。除了一种特殊情况外,这很好用:当屏幕关闭并且我立即按下电源按钮(或主页按钮)时,将跳过锁定屏幕。然后永远不会收到 ACTION_USER_PRESENT,只有 ACTION_SCREEN_ON。

有没有办法让我的广播接收器在收到 ACTION_SCREEN_ON 后知道屏幕锁定是否处于活动状态并期待稍后出现 ACTION_USER_PRESENT?或者如果锁屏被跳过,不等待 ACTION_USER_PRESENT 并立即重新开始采样?

【问题讨论】:

【参考方案1】:

直到 android 4.4,如果屏幕打开并且锁屏被禁用,只有 ACTION_SCREEN_ON 被触发。从 Android 5.0 开始,在这种情况下,ACTION_SCREEN_ON 和 ACTION_USER_PRESENT 都会被触发。

【讨论】:

ACTION_USER_PRESENT的行为变化参考吗?

以上是关于用 ACTION USER_PRESENT 替换 ACTION_SCREEN_ON?的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 Action重启偶尔404 偶尔正常

通过regex用回调替换内容标记

用 WordPress (wpml) 中的简码替换元素或选择器

如何用 func 委托替换 Action 委托,将值返回给函数

用元素名称替换索引,保持名称的顺序而不是索引的顺序

ASP.NET Core 替换 Action 实际执行方法