【问题标题】:how to execute code when my app terminated in background in ios当我的应用程序在 ios 后台终止时如何执行代码
【发布时间】:2015-08-26 09:38:05
【问题描述】:

在 iOS 中,我们都知道有 AppDelegate 方法applicationWillTerminate,当我的应用程序当前运行时(即不在后台)被用户关闭时调用它。但是当我的应用在后台运行时被终止(被用户关闭或被操作系统杀死)时,我想做一些事情(例如保存数据)。

PS:我的应用可以在后台运行。

你有什么解决办法吗?谢谢。

【问题讨论】:

  • 为什么不能保存applicationWillTerminate:中的数据?
  • 当用户杀死你的应用时,不调用任何代码,应用直接从内存中删除,所有正在运行的进程都被取消。

标签: ios background


【解决方案1】:

抱歉,您应该使用applicationWillTerminate

这个方法让你的应用知道它即将被终止并且 完全从记忆中清除。您应该使用此方法执行任何 您的应用程序的最终清理任务,例如释放共享资源, 保存用户数据,并使计时器失效。您对此的实施 方法大约有五秒钟的时间来执行任何任务并返回。 如果该方法在时间到期之前没有返回,系统可能会杀死 整个过程。

适用于不支持后台执行或链接的应用 针对 iOS 3.x 或更早版本,该方法总是在用户调用时调用 退出应用程序。 对于支持后台执行的应用, 此方法 一般不会在用户退出应用时调用,因为应用 在这种情况下,只需移动到后台。但是,这种方法可能 在应用程序在后台运行的情况下调用 (未暂停)并且系统出于某种原因需要终止它。

因此,如果您还需要在用户手动终止应用时保存数据,请使用 applicationDidEnterBackground,如果您的应用支持后台模式,则会调用它。

【讨论】:

  • 如果有任何方法可以在应用程序终止时运行任务循环,我会徘徊。
【解决方案2】:

如果您需要在应用未运行时执行代码,则有 根据您要执行的操作,您可以选择几个选项。

  1. 后台提取将使您的应用程序在后台按预定时间间隔运行大约 30 秒。这样做的目的是获取数据 并为下次运行应用准备好您的 UI。
  2. 推送通知让您的应用程序从您的服务器获取新数据。如果需要,您可以在设备上显示一条消息,但不是 必需 - 静默推送通知可让您跳过该部分。
  3. 本地通知让您可以向用户显示警报,以及您想要的任何媒体附件以及一些供用户使用的选项 从中选择。如果他们选择这些选项,那么您的应用程序可以 在前台或后台启动以处理它们。

来自: https://www.hackingwithswift.com/example-code/system/how-to-run-code-when-your-app-is-terminated

您也可以使用静默推送通知 正如我在类似问题中提到的那样:https://stackoverflow.com/a/57245980/6157415

【讨论】:

  • @Virinder 对不起,我没有项目文件夹了,你必须实现静默推送通知,对我来说这是最好的方法。请记住,iOS 系统公共 API 只允许您在 backgroubd 中执行某些功能,而不是全部。例如,您可以在应用程序处于后台或滑出时播放音乐,但无法开始录音。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 2019-09-08
相关资源
最近更新 更多