iOS应用程序可以保证在背景中保留多少时间,而不会从内存中删除



我有一个由3个视图控制器组成的Swift iOS应用程序 - 具有表观视图的初始iOS应用,第二个具有所选元素的iOS应用程序,并且能够创建新的时间会话,而第三个时间会话则是会话的实际计时器(我们将其称为计时器VC(。

在这种情况下,焦点是计时器视图控制器。但是,问题与计时器本身无关。它在前景模式和背景模式下起作用。问题是:

应用程序为背景。然后在一定固定的时间内收到本地通知 - 提醒您返回计时器VC并保存结果。在大多数情况下,它可以正常工作,但是有时(通过通知(返回应用程序时,它会用tableview开放初始VC,而不是计时器VC,它似乎在一段时间后终止了背景应用程序,然后当您返回通知时,重新打开它。在这种情况下,明显丢失了计时器VC的所有数据,因为App Logic要求用户在会话完成后保存数据。

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

如何使此计时器VC在后台运行尽可能多的时间?另外,是否有人知道iOS应用程序可以保证在不被删除内存的情况下留在后台?非常感谢。

无法保证您的应用程序执行时间在后台模式。操作系统可以随时将其暂停,操作系统只有通知您将在应用程序委托中收到的应用程序。

要设置本地通知,您只需要从OS获得帮助。您不能在背景线程中依靠应用程序的执行。对于安排和处理本地通知,您可以浏览以下文档。

最新更新