在iOS中,我们都知道有AppDelegate方法applicationWillTerminate
,当用户当前正在运行我的应用程序时关闭它(即不在后台)。但是当我的应用程序在后台运行时终止(由用户关闭或被操作系统杀死)时,我想做某事(例如保存数据)。
PS:我的应用可以在后台运行。
你有解决方案吗?感谢。
答案 0 :(得分:7)
抱歉,您应该使用applicationWillTerminate
:
此方法可让您的应用知道它即将被终止 完全从记忆中清除。您应该使用此方法执行任何操作 应用程序的最终清理任务,例如释放共享资源, 保存用户数据,并使计时器无效。你执行这个 方法有大约五秒钟来执行任何任务并返回。 如果方法在时间到期之前没有返回,则系统可能会终止 整个过程。
适用于不支持后台执行或已关联的应用 对于iOS 3.x或更早版本,此方法始终在用户时调用 退出应用程序。 对于支持后台执行的应用, 此方法 通常不会在用户退出应用程序时调用,因为该应用程序 在这种情况下简单地移动到背景。但是,这种方法可能 在应用程序在后台运行的情况下调用 (未暂停)系统需要因某种原因终止它。
因此,如果您需要在用户手动终止应用时保存数据,请使用applicationDidEnterBackground
,如果您的应用支持后台模式,则会调用该数据。
答案 1 :(得分:0)
如果您需要在应用未运行时执行代码,则可以 根据您要执行的操作,您可以选择几个选项。
- 通过后台抓取,您的应用可以在后台按计划的时间间隔运行约30秒。这样做的目的是获取数据 并为下次运行该应用程序做好准备。
- 通过推送通知,您的应用可以从服务器中获取新数据。您可以根据需要在设备上显示一条消息,但不是 必需-静默推送通知使您可以跳过该部分。
- 本地通知使您可以向用户显示警报,所需的任何媒体附件以及用户选择的一些选项 从中选择。如果他们选择这些选项,则您的应用可以 在前台或后台启动以处理它们。
发件人: https://www.hackingwithswift.com/example-code/system/how-to-run-code-when-your-app-is-terminated
您还可以使用静默推送通知 正如我在类似问题中提到的:https://stackoverflow.com/a/57245980/6157415