有没有办法在应用程序进入后台后检测锁定?例如,
- 我在前台打开了我的应用程序 (A)
- 然后我将另一个应用程序(B)带到前台
- 然后锁屏
(A) 是否有可能检测到锁?
有没有办法在应用程序进入后台后检测锁定?例如,
(A) 是否有可能检测到锁?
答案是“理论上是的,但通常不是”。
应用程序实际上有比活动和后台更多的状态。
这些州是:
当用户切换应用程序、按下主页按钮或锁定他们的设备时,您的应用程序会收到通知它正在进入后台,但它实际上只在后台运行很短的时间。它几乎立即转换为暂停。一旦您被暂停,您可以随时终止,恕不另行通知。
如果您在收到将被移至后台的通知时需要更多时间来完成任务,您可以使用beginBackgroundTaskWithExpirationHandler
呼叫请求它。但是,在撰写本文时,您最多只能等待 3 分钟,然后您的过期处理程序会触发并且您的应用程序会暂停。
因此,您实际上不会在后台运行很长时间,并且很可能当用户锁定屏幕(或自动锁定)时,您已经暂停并且不会收到通知。
(A) 是否有可能检测到锁?
不,有两个原因:
在任何情况下,您都无法检测到屏幕已被锁定。即使您的应用程序在屏幕锁定时位于最前面,您所知道的只是您的应用程序是后台运行的,而您无法了解原因。
在您的场景中,当屏幕被锁定时,您的应用程序甚至还没有运行——它已被暂停。所以它不能“检测”任何东西。