iOS可以在后台杀死一个应用程序吗?

时间:2012-04-19 14:45:14

标签: iphone ios uiapplicationdelegate

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

我也很好奇在另外两个案例中会发生什么,总共三个:

  1. 设备已开启
  2. 设备已关闭电源
  3. 设备丢失电池
  4. 我问,因为我想知道applicationWillTerminate:可能被调用的频率。我想知道这个,因为那是我注册远程通知的地方。如果将设备令牌发送到服务器失败,我想知道该方法再次被调用的可能性(即,重试将设备令牌发送到服务器)。

4 个答案:

答案 0 :(得分:7)

如果您的应用程序支持多任务处理(针对iOS 4.0+链接的任何内容的默认设置),则几乎不会调用此方法。文档说明在应用程序在后台运行并且系统想要终止的情况下,可以调用。然而,根据我的经验,我在运行一个在后台积极播放音乐的音乐应用时,实际上只看到了这个,系统正在抛弃一切。如果我运行后台任务(不是音乐,而是短期后台任务),我已经看到应用程序在未调用此方法的情况下终止。

我不会依赖于调用此函数并尝试执行您在委托方法中需要进行的所有清理工作,以便转换到后台和后台任务完成块(至少执行一次应用程序被放弃前几秒钟。)

答案 1 :(得分:5)

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

关于可能的方式,您将获得-applicationWillTerminate:,这取决于用户以及他们如何使用他们的设备。你应该在得到它时适当地处理它,否则就去做你的事。

答案 2 :(得分:3)

当内存不足时,iOS 可以关闭您的应用,呼叫applicationWillTerminate

docs对此方法说了这个:

  

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

答案 3 :(得分:1)