我有一个可以自动锁定的应用程序(需要密码输入屏幕)...
a) when the app starts for the first time
b) when another app is started and takes over the device
c) when the device "sleeps" automatically
d) when the user "sleeps" the device manually
(note: with c & d, if the user "awakens" the app within 5 seconds, it does NOT ask for the password)
我想为我正在编写的应用程序执行此操作,因此我创建了一个PasswordActivity
包含必要验证步骤的活动 () 并使其正常工作。
我最初将它放在ONCREATE
(MainActivity
即在 AndroidManifest 中启动)中。这似乎工作正常。但随后开始重新锁定能力。所以试着把它移到ONSTART
or ONRESUME
。但是当我的 APP 中的另一个 ACTIVITY 获得焦点或屏幕旋转时,PasswordActivity
再次触发。那是行不通的。
在这里,我发现了一个线程,建议在 Manifest 中将其设置为 LAUNCHER 应用程序,然后当密码确定时,调用 MainActivity。这似乎效果更好......但随后遇到了一个问题,即只有当用户按下主屏幕上的后退按钮(我假设停止我的应用程序)并再次启动应用程序时,它才会“重新锁定”。虽然没有捕捉到另一个应用程序接管设备。
因此,基于此,在查看了所有关于生命周期的文档之后(尽管其中大多数是基于 ACTIVITY 的,而不是基于 APPLICATION 的),不知道如何捕捉应用程序本身失去焦点(另一个应用程序接管)以及如何处理自动或手动睡眠(上面的 C 和 D)以及时间延迟检查。我假设这将是几个调用或步骤的组合,但目前不确定是哪些调用或步骤。
有什么建议吗?