2011-04-28 102 views
3

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

applicationWillTerminate

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

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

如果你知道一个更简单的方式来实现这一点,我会很高兴听到:)

谢谢

回答

1

天使,你要求的东西不能做。该应用将以SIGKILL终止。不可阻挡,不可捕捉,没有通知。系统启动的终止或用户请求的终止没有区别。

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

0

IIRC它是这样的:

在启动:

  • didFinishLaunchingWithOptions
  • applicationDidBecomeActive

按HOME键:

  • applicationWillResignActive
  • applicationDidEnterBackground

从主屏幕说回:

  • applicationWillEnterForeground
  • applicationDidBecomeActive

applicationWillTerminate当您的应用程序由于某个调用而退出或由于某种原因致使操作系统死机时调用它。

1

从对此事UIApplicationDelegate文档:

对于支持 后台执行的应用程序,这种方法是 一般不叫当用户 退出应用程序,因为 应用程序只需移动到 背景那种情况。但是,此方法可能会在 的情况下调用,其中应用程序在 中运行的背景(未暂停)和 系统需要终止某些 原因。

在我看来,除非你的后台进程在后台主动执行某些操作(而不是暂停),否则applicationWillTerminate方法将永远不会被调用。

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

+0

我们在后台激活(运行),并没有得到“applicationWillTerminate”。看到我的答案。 – 2011-04-28 22:40:29

+0

看起来就是这样,谢谢史蒂夫,谢谢大家。 – 2011-04-29 09:13:51