iOS应用程序保留在后台多少时间而不从内存中删除?

时间:2018-04-04 11:40:46

标签: ios memory-management background viewcontroller

我有一个Swift iOS应用程序,包含3个视图控制器 - 第一个带有tableview,第二个带有所选元素和创建新时间段的能力,第三个带有会话的实际计时器(让我们看看)称之为计时器vc)。

在这种情况下,焦点是计时器视图控制器。但问题不在于计时器本身。它适用于前台和后台模式。问题是:

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

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

如何让这个计时器vc在后台运行所需的时间?此外,是否有人知道iOS应用程序保留在后台多少时间而不从内存中删除?非常感谢。

1 个答案:

答案 0 :(得分:0)

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

要设置本地通知,您只需从操作系统获取帮助。您不能依赖应用程序在后台线程中的执行。有关安排和处理本地通知,您可以阅读以下文档。

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