OGeek|极客世界-中国程序员成长平台

标题: ios - iOS 应用程序可以保证在后台停留多长时间而不会从内存中删除? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 19:59
标题: ios - iOS 应用程序可以保证在后台停留多长时间而不会从内存中删除?

我有一个由 3 个 View Controller 组成的 Swift iOS 应用程序——第一个带有 tableview,第二个带有所选元素并能够创建新的时间 session ,第三个带有 session 的实际计时器(让我们称它为计时器 vc)。

在这种情况下,焦点是计时器 View Controller 。但是,问题不在于计时器本身。它适用于前台和后台模式。问题是这样的:

应用程序进入后台。然后在某个固定的时间段内,它会收到一个本地通知——提醒返回计时器 vc 并保存结果。大多数情况下,它工作正常,但有时当您返回应用程序(通过通知)时,它会使用 tableview 而不是计时器 vc 打开初始 vc,这似乎系统会在一段时间后终止后台应用程序然后当您返回通知时重新打开它。在这种情况下,来自定时器 vc 的所有数据显然都丢失了,因为应用程序逻辑要求用户在 session 结束后保存数据。

我认为,问题的本质可能与应用程序可以在后台停留多长时间而不会被终止或暂停有关(如果我没记错的话,在这种状态下,与应用程序从内存中删除)。我的意思是,当您将通知设置为每 1、5 或 10 分钟触发一次时,一切似乎都很好。但是,当通知设置为 30 分钟或更长时间时,上述错误似乎会不时出现(尤其是在实际设备而不是模拟器上进行测试时)。大多数情况下,如果设备存储空间几乎已满 - 可用空间不足 1Gb),就会出现这种情况。这让我相信这也可能是一个内存管理问题。

如何让这个计时器 vc 在后台运行所需的时间?另外,有人知道iOS应用程序可以保证在后台停留多长时间而不会从内存中删除吗?非常感谢。



Best Answer-推荐答案


无法保证您的应用程序在后台模式下的执行时间。操作系统可以随时暂停它,操作系统只负责通知您的应用程序,您将在应用委托(delegate)。

要设置本地通知,您只需要从操作系统获得帮助。您不能依赖应用程序在后台线程中的执行。对于本地通知的调度和处理,您可以查看以下文档。

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/SchedulingandHandlingLocalNotifications.html#//apple_ref/doc/uid/TP40008194-CH5-SW1

关于ios - iOS 应用程序可以保证在后台停留多长时间而不会从内存中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49650079/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4