当我的应用程序在ios后台终止时如何执行代码

问题描述 投票:0回答:3

在iOS中,我们都知道有AppDelegate方法

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

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

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

ios background
3个回答
11
投票

抱歉,但你应该使用

applicationWillTerminate

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

对于不支持后台执行或链接的应用程序 对于 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-termerated

您还可以使用无声推送通知 正如我在类似问题中提到的:https://stackoverflow.com/a/57245980/6157415


0
投票

我成功使用了appWillResignActive

© www.soinside.com 2019 - 2024. All rights reserved.