我有一个应用程序,可以记录和上传大文件(每个文件最多5个(
录制完成后,用户会触发一个动作,开始上传文件。
上传的内容会被注册以进行后台处理,因此如果手机进入睡眠状态,它们会继续。
我遇到的问题:
- 一些文件的随机内存崩溃超过4 GB
- 应用程序已挂起,无法启动后台上载
因此,如果用户记录的文件介于4-5gigs之间,则应用程序在上传时会随机崩溃。同时上传多个5G文件也会增加崩溃的几率。
我们目前按顺序上传文件,但遇到了我列表中的第2个问题。如果用户记录了多个5个gigs文件,并使手机处于睡眠状态,则只有第一个文件会上传,用户必须重新打开应用程序才能开始处理下一个文件。
我曾尝试使用BackgroundTasks来查看它是否可以触发上传,但后台任务从未启动,我读到只有当它认为用户即将使用手机时才会尝试启动后台任务。
我还尝试在uploadTask上使用urlSessionDidFinishEvents回调。但它似乎从未激发过,或者至少不能用于调用API请求。
有人建议启动大文件的后台文件上传吗?
我认为问题在于您可能达到了系统资源限制。发生这种情况时,系统将弹出您的二进制文件;它们被称为Jetsam事件。我建议您在设备上触发sysdiagnose事件(每个设备不同——通常同时按下音量增大、减小和侧边按钮(。
然后从Settings > Privacy > Analytics and Improvements > Analytics Data
恢复日志
文件名以sysdiagnose_YEAR.MONTH.DAY_*.
开头
将文件复制到Mac后(使用iOS UI中的"共享"按钮(,您可以查看具体的违规行为。
请使用检索到的特定日志信息更新您的问题。
最后,实现applicationDidReceiveMemoryWarning:
是值得的,因为在这样的处理过程中,您的应用程序可能会占用大量内存。