0

有没有办法在应用程序进入后台后检测锁定?例如,

  1. 我在前台打开了我的应用程序 (A)
  2. 然后我将另一个应用程序(B)带到前台
  3. 然后锁屏

(A) 是否有可能检测到锁?

4

2 回答 2

2

答案是“理论上是的,但通常不是”。

应用程序实际上有比活动和后台更多的状态。

这些州是:

  1. 积极的
  2. 后台(仍在运行,但另一个应用程序在前台)
  3. 挂起(在内存中,但没有获得任何 CPU 时间)
  4. 不跑。(不再运行或在内存中。)

当用户切换应用程序、按下主页按钮或锁定他们的设备时,您的应用程序会收到通知它正在进入后台,但它实际上只在后台运行很短的时间。它几乎立即转换为暂停。一旦您被暂停,您可以随时终止,恕不另行通知。

如果您在收到将被移至后台的通知时需要更多时间来完成任务,您可以使用beginBackgroundTaskWithExpirationHandler呼叫请求它。但是,在撰写本文时,您最多只能等待 3 分钟,然后您的过期处理程序会触发并且您的应用程序会暂停。

因此,您实际上不会在后台运行很长时间,并且很可能当用户锁定屏幕(或自动锁定)时,您已经暂停并且不会收到通知。

于 2015-12-21T17:51:57.433 回答
0

(A) 是否有可能检测到锁?

不,有两个原因:

  • 在任何情况下,您都无法检测到屏幕已被锁定。即使您的应用程序在屏幕锁定时位于最前面,您所知道的只是您的应用程序是后台运行的,而您无法了解原因

  • 您的场景中,当屏幕被锁定时,您的应用程序甚至还没有运行——它已被暂停。所以它不能“检测”任何东西

于 2015-12-21T17:55:19.607 回答