当用户暂停我的应用时,我正在使用后台任务来完成一些操作。 这工作正常,但我注意到如果用户在后台任务完成之前重新激活应用程序,屏幕将保持黑色,并且永远不会调用applicationWillEnterForeground:。
完成后台任务后,一切都很好,并且调用了applicationWillEnterForeground,但有没有办法在任务运行时重新激活应用程序?
我所能找到的就是让后台任务不断检查剩余时间,并注意当重新激活应用程序时,这会变得非常高。它可以自行结束并显示应用程序,但这仍然意味着应用程序黑色半秒左右。
答案 0 :(得分:0)
快速提问。你在使用beginBackgroundTaskWithExpirationHandler吗?
您是否异步运行实际工作?如这个答案所示? objective c - Proper use of beginBackgroundTaskWithExpirationHandler
如果没有,你应该在a-sychornously上运行你的长期工作,因为否则它将作为你的主RunLoop的一部分执行。在长时间运行的任务完成之前,这确实会阻止您的应用重绘和响应。