如何检测应用程序何时从显示超时“唤醒”?

时间:2013-04-26 20:10:49

标签: android

对于工业应用程序,客户已要求在首次声明应用程序时要求用户登录,并且如果设备“进入睡眠状态”则再次请求用户,这意味着他将设备关闭并且屏幕熄灭。如果用户将设备放下并走开,并且工厂车间的其他人稍后发现该人必须使用他自己的ID登录应用程序,则情况如此。

无论如何,当应用程序首次启动时,我可以强制登录主屏幕Activity的 onCreate 事件,但似乎没有“唤醒”的活动生命周期事件“显示超时后。 onResume 处理程序会被调用各种各样的东西,比如只是从同一个应用程序中的另一个Activity返回,所以它太通用了。

如何检测我的应用从显示时间中醒来的时间?

NB - 我不在乎我是否检测到显示器开启本身关于检测屏幕开启的Stack Overflow有几个讨论({{3虽然共识似乎很难,甚至可能故意劝阻。我只是想知道什么时候我自己的应用“醒来”。如果检测到屏幕打开是唯一或最好的方法,有人可以指点我一些示例代码?

提前致谢。

1 个答案:

答案 0 :(得分:2)

  

如何检测我的应用从显示时间中醒来的时间?

使用registerReceiver()(可能来自onResume())和unregisterReceiver()(可能来自onPause())注册ACTION_USER_PRESENTACTION_USER_PRESENTACTION_SCREEN_ON的不同之处在于,ACTION_USER_PRESENT在用户越过键盘锁之前不会被调用,无论是刷卡解锁还是PIN或其他任何内容。

我的“可能”陈述是因为我从未尝试过您的具体方案。 通常,您可以在这些生命周期回调中使用这些方法来动态注册接收器,但对于ACTION_USER_PRESENT,您可能必须使用onCreate()和{{onDestroy()更具攻击性。 1}}或者什么。

  

这里的共识似乎很难,甚至可能是故意劝阻

我不知道你是如何从这个问题及其答案中得出结论的。

  

我只是想知道自己的应用何时“醒来”。

没有这样的概念。应用程序不会“醒来”。设备“醒来”。