GCD sendSynchronousRequest applicationDidEnterBackground

问题描述:

每次我的应用程序加载它时,都会调用一个Web服务来检查是否有更新可供下载。如果有它下载它。GCD sendSynchronousRequest applicationDidEnterBackground

我使用Grand Central Dispatch在不同线程中同步下载更新,以便我可以在我的主线程上显示加载图标。我需要同步下载,因为应用程序在继续之前需要更新。

但是,如果下载需要一段时间并且屏幕进入睡眠状态,则会发生问题,从而有效地调用applicationDidEnterBackground。当用户打开屏幕的背面上和应用程序恢复我得到以下错误:

EXE_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0) 

什么是解决这个问题的最好方法?尝试暂停下载并在应用程序恢复时再次恢复或创建后台任务并继续下载?我不确定哪个是最好的方法。

我认为最安全的答案是,除非您的应用程序具有其他背景特权(音频,gps,外部设备等),否则当您调用-applicationDidEnterBackground时应暂停/停止任何网络下载,并在您的应用程序恢复时回来。