2

当用户暂停我的应用程序时,我正在使用后台任务来完成一些操作。这工作正常,但我只是注意到,如果用户在后台任务完成之前重新激活应用程序,屏幕将保持黑色并且 applicationWillEnterForeground: 永远不会被调用。

一旦后台任务完成,一切都会再次正常并调用 applicationWillEnterForeground,但是有没有办法让应用程序在任务运行时重新激活?

我所能找到的就是让后台任务不断检查剩余时间,并注意当应用程序重新激活时这变得非常高。然后它可以自行结束并出现应用程序,但这仍然意味着应用程序黑屏半秒左右。

4

1 回答 1

0

快速提问。你在使用 beginBackgroundTaskWithExpirationHandler 吗?

您是否正在异步运行实际工作?如this answer所示? 目标 c - 正确使用 beginBackgroundTaskWithExpirationHandler

如果没有,您应该在 a-sychornously 上运行您长时间运行的工作,否则它将作为您的主 RunLoop 的一部分执行。这确实会阻止您的应用程序重绘和响应,直到长时间运行的任务完成。

于 2012-11-16T21:01:08.883 回答