对于工业应用程序,客户已要求在首次声明应用程序时要求用户登录,并且如果设备“进入睡眠状态”则再次请求用户,这意味着他将设备关闭并且屏幕熄灭。如果用户将设备放下并走开,并且工厂车间的其他人稍后发现该人必须使用他自己的ID登录应用程序,则情况如此。
无论如何,当应用程序首次启动时,我可以强制登录主屏幕Activity的 onCreate 事件,但似乎没有“唤醒”的活动生命周期事件“显示超时后。 onResume 处理程序会被调用各种各样的东西,比如只是从同一个应用程序中的另一个Activity返回,所以它太通用了。
如何检测我的应用从显示时间中醒来的时间?
NB - 我不在乎我是否检测到显示器开启本身关于检测屏幕开启的Stack Overflow有几个讨论({{3虽然共识似乎很难,甚至可能故意劝阻。我只是想知道什么时候我自己的应用“醒来”。如果检测到屏幕打开是唯一或最好的方法,有人可以指点我一些示例代码?
提前致谢。
答案 0 :(得分:2)
如何检测我的应用从显示时间中醒来的时间?
使用registerReceiver()
(可能来自onResume()
)和unregisterReceiver()
(可能来自onPause()
)注册ACTION_USER_PRESENT
。 ACTION_USER_PRESENT
与ACTION_SCREEN_ON
的不同之处在于,ACTION_USER_PRESENT
在用户越过键盘锁之前不会被调用,无论是刷卡解锁还是PIN或其他任何内容。
我的“可能”陈述是因为我从未尝试过您的具体方案。 通常,您可以在这些生命周期回调中使用这些方法来动态注册接收器,但对于ACTION_USER_PRESENT
,您可能必须使用onCreate()
和{{onDestroy()
更具攻击性。 1}}或者什么。
这里的共识似乎很难,甚至可能是故意劝阻
我不知道你是如何从这个问题及其答案中得出结论的。
我只是想知道自己的应用何时“醒来”。
没有这样的概念。应用程序不会“醒来”。设备“醒来”。