我想知道如何检测何时应用程序即将被终止。我是说真的终止了,而不是进入后台模式。我已经使用了这个事件,但是它没有触发:
applicationWillTerminate
我真正想要实现的是当用户点击Home 两次并按下应用程序上的红色气球时获得某种事件或通知。我不关心应用程序进入后台模式,有几个事件可以正确处理这个,它们都工作得很好。
我需要这个,这样我就可以"通知"我的服务器停止向APNS发送推送通知的应用程序被终止,不在后台运行。
如果你知道一个更简单的方法来实现这一点,我很高兴听到:)
谢谢
注册你的对象(视图控制器等)来监听UIApplicationWillTerminateNotification
通知,和/或重写应用程序委托的-applicationWillTerminate:
方法,并把你的代码放在那里。
天使,你的要求是无法实现的。应用程序将使用SIGKILL终止。不可阻挡,不可捕捉,没有通知。系统发起的终止与用户请求的终止没有区别。
只有当你的应用不支持后台处理时,你才会得到applicationWillTerminate
来自UIApplicationDelegate文档:
用于支持后台执行,这个方法是一般不调用时的用户退出应用程序,因为应用程序只是移动到这个案例的背景。然而,这方法可能在某些情况下被调用应用程序在哪里运行背景(没有悬挂)和系统需要终止它原因。
在我看来,除非你的后台进程在后台积极地做一些事情(没有被挂起),否则applicationWillTerminate方法将永远不会被调用。
我想这取决于你对"在后台"的定义。
IIRC是这样的:
在开始:
-
didFinishLaunchingWithOptions
-
applicationDidBecomeActive
紧迫:
-
applicationWillResignActive
-
applicationDidEnterBackground
从主屏幕返回:
-
applicationWillEnterForeground
-
applicationDidBecomeActive
applicationWillTerminate
在您的应用程序由于调用而退出或操作系统出于某种原因杀死它时被调用。