1

设备开机时,iOS 是否可以applicationWillTerminate:在后台自动终止我的应用程序(调用)?

我也很好奇另外两种情况会发生什么,总共三个:

  1. 设备已开机
  2. 设备已关机
  3. 设备没电了

我问是因为我想知道多久applicationWillTerminate:可能会被调用一次。我想知道这一点,因为那是我注册远程通知的地方。如果将设备令牌发送到服务器失败,我想知道该方法再次被调用的可能性有多大(即重试将设备令牌发送到服务器)。

4

4 回答 4

7

如果您的应用程序支持多任务处理(任何与 iOS 4.0+ 相关联的默认设置),则该方法几乎不会被调用。文档说它可能会在应用程序在后台运行并且系统想要终止的情况下被调用。但是,根据我的经验,我只在运行一个在后台积极播放音乐并且系统正在抛弃所有内容的音乐应用程序时才真正看到过这个。在我运行后台任务(不是音乐,而是短期后台任务)的情况下,我看到应用程序在没有调用此方法的情况下终止。

我永远不会依赖这个被调用并尝试在您的委托方法中执行您需要做的所有清理工作以转换到后台和您的后台任务完成块(至少在几秒钟之前执行该应用程序被抛弃)。

于 2012-04-19T14:52:04.057 回答
5

iOS 不仅可以自动终止您的应用程序,而且用户可以手动终止它。事实上,用户唯一可以杀死你的应用程序的时间是它在后台时。此外,当您的应用程序处于“后台”时,它更有可能被挂起而不是实际运行,因此当您不是前台应用程序时,不要指望进行大量处理。

至于您获得的可能性-applicationWillTerminate:有多大,这取决于用户以及他们如何使用他们的设备。拿到的时候就应该妥善处理,否则就去做自己的事情。

于 2012-04-19T14:52:56.850 回答
3

当内存不足时,iOS可以关闭您的应用程序,调用applicationWillTerminate.

文档是这样说的:

...但是,在应用程序在后台运行(未挂起)并且系统出于某种原因需要终止它的情况下,可能会调用此方法。

于 2012-04-19T14:47:38.057 回答
1

查看iOS 开发人员库:iOS 应用程序编程指南:应用程序终止

于 2012-04-19T15:05:59.547 回答