1

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

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

如何检测我的应用何时从显示超时中唤醒?

注意 - 我不在乎我是否检测到显示器本身 开启 Stack Overflow 上有几个关于检测屏幕开启的讨论(Android - 如何接收广播意图 ACTION_SCREEN_ON/OFF?),其中的共识似乎是很难,甚至可能是故意气馁。我只想知道我自己的应用程序何时“醒来”。如果检测屏幕打开是唯一或最好的方法,有人可以指点我一些示例代码吗?

提前致谢。

4

1 回答 1

2

如何检测我的应用何时从显示超时中唤醒?

使用registerReceiver()(可能来自onResume())和unregisterReceiver()(可能来自onPause())注册ACTION_USER_PRESENTACTION_USER_PRESENT不同之处在于,ACTION_SCREEN_ONACTION_USER_PRESENT用户通过键盘锁之前不会调用它,无论是滑动解锁还是 PIN 或其他。

我的“可能”陈述是因为我从未尝试过您的具体情况。通常,您会在那些生命周期回调中使用这些方法来动态注册接收器,但是对于ACTION_USER_PRESENT,您可能必须更加积极,使用onCreate()andonDestroy()或其他东西。

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

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

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

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

于 2013-04-26T20:59:49.970 回答