我正在为我的应用程序播放背景音频。但是一些用户警告我一个奇怪的错误。在后台播放 1 小时或更长时间后,应用程序被 iOS 杀死,您需要再次启动它。
大多数情况下,当应用程序必须经常创建后台任务并使用它直到下载足够的数据以再次开始播放时,它会发生在互联网连接不良的情况下。
我知道后台任务的时间限制,这不是问题。这是来自用户设备的崩溃日志的一部分:
Exception Type: EXC_RESOURCE
Exception Subtype: CPU_FATAL
Exception Message: (Limit 80%) Observed 0% over 60 sec
Triggered by Thread: 0
最奇怪的是第三行。如果 0% 低于 80% 的限制,为什么它是一个例外?
通过符号化 Thread 0(它是主线程)的堆栈跟踪,我发现它发生在 method 上- [NSFileManager fileExistsAtPath:]
。以前它发生在方法上+ [UIImage imageWithContentsOfFile:]
。那么什么可以冻结对 iOS 后台文件系统的访问呢?
还:
- 当应用程序尝试在锁定屏幕上设置图像时会发生这种情况。
- 图像存储在 Cache 文件夹中。