iOS:如何检测UIApplicationDelegate状态何时变为“暂停”?

时间:2016-11-18 14:31:52

标签: ios objective-c background ibeacon uiapplicationdelegate

我们如何检测iOS应用程序暂停的时间?

官方UIApplicationDelegate documentation中没有提及此方法。

以下是应用可以拥有的状态:

使用案例

我想在应用程序停止运行后记录因为位置事件而被唤醒。例如,我有一个应用程序正在监控的iBeacon。我激活iBeacon,应用程序在后台成功启动(持续10秒)。我希望在这10秒后已经过去时检测到App停止运行的时间。然而,似乎没有AppDelegate方法可以拦截这个(请考虑我正在研究这个具体案例。

上一个问题: 我曾问过一个以前没有得到回答的类似问题。请找到它here

2 个答案:

答案 0 :(得分:5)

虽然我不知道任何回调,但你可以通过以下方式查询剩余的背景时间:

NSLog(@"background time remaining: %8.2f", [UIApplication sharedApplication].backgroundTimeRemaining);

理论上,你可以将它放在一个线程中并在你的应用程序终止之前大约一秒钟执行自定义代码。有关详细信息,请参阅我的博客文章:

http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html

答案 1 :(得分:1)

我认为您不会从Suspended州获得任何反馈。暂停意味着应用程序在内存中,但现在没有代码正在执行。

Documentation

  

应用程序在内存中但未执行代码。系统会暂停后台应用程序并且没有任何待处理任务要完成。系统可以随时清除已暂停的应用,而无需将其唤醒以便为其他应用腾出空间。

所以在我的理解中,如果一个应用程序会给你一个类似applicationDidEnterSuspendedState之类的回调,那将是一个悖论,因为Suspended状态意味着没有代码被执行。

相关问题