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

问题描述:

设备开机时,iOS是否可以在后台自动终止我的应用(请拨applicationWillTerminate:)?iOS可以在后台中杀死一个应用程序吗?

我也很好奇,在另外两起案件,三共发生了什么:

  1. 设备上
  2. 设备供电断电
  3. 设备失去电池

我因为我想知道applicationWillTerminate:可能被调用的频率。我想知道这一点,因为那是我注册远程通知的地方。如果在将设备令牌发送到服务器时出现故障,我想知道该方法将再次被调用的可能性(即,重试将设备令牌发送到服务器)。

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

docs说,这对方法:

...但是,这种方法可以在应用程序在后台(不暂停)运行的情况下被调用,而系统需要终止它一些原因。

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

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

iOS不仅可以自动终止您的应用,而且用户可以手动终止它。其实,只有时间的用户可以杀死你的应用的时候是在后台。此外,当你的应用程序处于“后台”时,它很可能会被暂停而不是实际运行,所以当你不是前台应用程序时,不要指望做很多处理。

至于如何可能这是你会得到-applicationWillTerminate:,这将取决于用户以及他们如何使用他们的设备。你应该在得到它时适当地处理它,否则就去做你的生意。

+0

+1。我看到很多杀死应用程序的用户,因为他们认为它可以节省内存。玩好游戏并使用'applicationWillTerminate:'来说明杀死你的应用的(不正确的)用户是很好的策略。 – kevboh 2012-04-19 14:57:21

+0

当我完成我必须做的事情之前,用户杀死我的应用程序会发生什么,比如保存Core Data数据库?我能做什么? – acecapades 2013-05-28 02:10:49

+0

@acecapades根据文档,您将有大约5秒的时间将数据保存在applicationWillTerminate方法中。 – RileyE 2013-10-04 15:53:08