我目前正在构建支持后台模式的应用。仅举几例,我已为HealthKit
注册了后台投放,我还会对didEnterRegion
等位置背景事件进行监控。据我所知,如果这些被调用,iOS将暂时在后台重新启动应用程序。但是,一旦完成,将从后台调用applicationWillTerminate
吗?如果没有,有没有办法听取应用终止?
答案 0 :(得分:1)
不,不会。 applicationWillterminate
仅在支持后台模式的应用程序中调用,当系统由于某种原因需要终止它时(通常是内存),如果它没有被挂起。如果它被暂停,系统不会向应用程序发送任何类型的通知。
您可以在此处查看有关应用生命周期的更多深入文档:The App Life Cycle Documentation
答案 1 :(得分:0)
应用可以随时暂停,一旦暂停,可以在没有进一步警告的情况下终止。因此,您不能依赖获得applicationWillTerminate
。我相信如果你的应用程序在终止时正在运行(前台或后台),你会收到这样的消息,但我不确定。我我确定您无法获得终止消息。
答案 2 :(得分:0)
并非总是如此!
导致您的应用停止的原因有很多。例如:当系统意外终止您的应用程序进程时,或者对于支持后台执行的应用程序applicationWillTerminate()
将不会被调用。您不知道您的应用何时属于这种情况,因此您不能依赖此方法。
基于此Apple's document:
对于支持后台执行的应用程序,此方法是 通常在用户退出应用程序时不会调用,因为 在这种情况下,应用程序只是移动到后台。但是,这个 在运行应用程序的情况下,可以调用可能方法 后台(未暂停),系统需要终止它 由于某种原因
有关详细信息:已经有S.O question讨论何时调用此方法以及何时调用此方法。