IOS如何管理后台应用的内存?

Posted

技术标签:

【中文标题】IOS如何管理后台应用的内存?【英文标题】:How does IOS manage memory of backgrounded apps? 【发布时间】:2018-10-28 14:55:06 【问题描述】:

我有一个 ios 应用,在测试期间似乎可以正常工作,直到...

该应用程序已在后台运行了很长一段时间,例如 24 小时...同时在其他应用程序(视频、音频、位置...电池电量低...大量内存)中发生了大量活动正在使用)。

然后,当我将我的应用程序带回前台时,它会出现故障,例如没有音频……然后在片刻后崩溃。

我知道这不是最好的描述,但它只发生过一次,我并没有要求任何人准确地告诉我问题出在哪里。

我真正想知道的是:

IOS 是否对后台应用程序执行任何操作,例如从内存中丢弃它们可能需要的对象?我认为如果它确实这样做了,那么它会在下次恢复时重新启动应用程序,而不是尝试恢复不可恢复的应用程序。

谢谢!

【问题讨论】:

【参考方案1】:

如果内存不足,系统可能认为有必要释放一些内存,并希望您通过实现UIApplicationDelegate 方法applicationDidReceiveMemoryWarning 和UIViewController 方法didReceiveMemoryWarning 来处理这种情况。

这些方法的文档没有提到当这些方法被调用时系统在幕后做了什么(只是你应该释放尽可能多的内存,否则你的应用程序可能会被终止),但 this blog post 声称系统可能会破坏内部对象,例如图形上下文或内部存储。

【讨论】:

以上是关于IOS如何管理后台应用的内存?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 应用退到管理后台 左上角图片未更新(或不显示)

iOS 应用退到管理后台 左上角图片未更新(或不显示)

ios上针对“已终止应用程序”的后台http请求

android系统下, 如何确定一个切换到后台的应用是被系统杀死的

iOS开发者后台添加了新的UDID,如何更新自动管理签名证书的设备描述文件(Provisioning Profiles)?

我想让一个app始终在后台运行,不被杀掉进程,怎么设置?