3

我想知道如何检测应用程序何时即将终止。我的意思是真正终止,而不仅仅是进入后台模式。我已经使用了这个事件,它不会触发:

应用程序将终止

我真正想要实现的是当用户点击主页两次并按下应用程序上的红色气球时获得某种事件或通知。我不关心应用程序进入后台模式,有几个事件可以正确处理这个问题并且它们都可以正常工作。

我需要这个,以便我可以“通知”我的服务器停止向 APNS 发送已终止且未在后台运行的应用程序的推送通知。

如果您知道实现此目的的更简单方法,我会很高兴听到 :)

谢谢

4

4 回答 4

2

注册您的对象(视图控制器等)以侦听UIApplicationWillTerminateNotification通知,和/或覆盖应用程序委托的-applicationWillTerminate:方法并将您的代码放在那里。

于 2011-04-28T22:33:23.653 回答
1

安琪儿,你所求的,是做不到的。该应用程序将通过 SIGKILL 终止。不可阻挡,不可捕捉,没有通知。系统启动的终止与用户请求的终止之间没有区别。

只有当您的应用程序不支持后台处理时,您才会获得 applicationWillTerminate。

于 2011-04-28T22:34:11.407 回答
1

来自关于此事的 UIApplicationDelegate 文档:

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

在我看来,除非您的后台进程正在后台积极地做某事(没有被挂起),否则 applicationWillTerminate 方法将永远不会被调用。

我想这取决于你对“在后台”的定义是什么。

于 2011-04-28T22:37:01.143 回答
0

IIRC是这样的:

开始时:

  • didFinishLaunchingWithOptions
  • applicationDidBecomeActive

按回家:

  • applicationWillResignActive
  • applicationDidEnterBackground

从主屏幕返回:

  • applicationWillEnterForeground
  • applicationDidBecomeActive

applicationWillTerminate当您的应用程序因调用而退出或操作系统因某种原因终止它时调用。

于 2011-04-28T22:33:03.497 回答