如果应用程序在后台启动,那么会调用`applicationWillTerminate`,但是会终止吗?

时间:2017-12-10 15:07:02

标签: ios uikit health-kit

我目前正在构建支持后台模式的应用。仅举几例,我已为HealthKit注册了后台投放,我还会对didEnterRegion等位置背景事件进行监控。据我所知,如果这些被调用,iOS将暂时在后台重新启动应用程序。但是,一旦完成,将从后台调用applicationWillTerminate吗?如果没有,有没有办法听取应用终止?

3 个答案:

答案 0 :(得分:1)

不,不会。 applicationWillterminate仅在支持后台模式的应用程序中调用,当系统由于某种原因需要终止它时(通常是内存),如果它没有被挂起。如果它被暂停,系统不会向应用程序发送任何类型的通知。

您可以在此处查看有关应用生命周期的更多深入文档:The App Life Cycle Documentation

答案 1 :(得分:0)

应用可以随时暂停,一旦暂停,可以在没有进一步警告的情况下终止。因此,您不能依赖获得applicationWillTerminate。我相信如果你的应用程序在终止时正在运行(前台或后台),你会收到这样的消息,但我不确定。我确定您无法获得终止消息。

答案 2 :(得分:0)

并非总是如此!

导致您的应用停止的原因有很多。例如:当系统意外终止您的应用程序进程时,或者对于支持后台执行的应用程序applicationWillTerminate()将不会被调用。您不知道您的应用何时属于这种情况,因此您不能依赖此方法。

基于此Apple's document

  

对于支持后台执行的应用程序,此方法是   通常在用户退出应用程序时不会调用,因为   在这种情况下,应用程序只是移动到后台。但是,这个   在运行应用程序的情况下,可以调用可能方法   后台(未暂停),系统需要终止它   由于某种原因

有关详细信息:已经有S.O question讨论何时调用此方法以及何时调用此方法。