长时间运行的后台任务完成后应用程序未挂起

Posted

技术标签:

【中文标题】长时间运行的后台任务完成后应用程序未挂起【英文标题】:App not suspending after long-running background task completes 【发布时间】:2014-11-01 00:18:45 【问题描述】:

为什么我的应用在长时间运行的后台任务完成后没有立即挂起?

ios 8 上运行的应用使用长时间运行的后台任务来避免在进入后台时被挂起。 一切都很好。任务完成后,应用调用后台任务完成处理程序:

        [[UIApplication sharedApplication] endBackgroundTask:backgroundTask];
        backgroundTask = UIBackgroundTaskInvalid;

但是,对 backgroundTimeRemaining 的调用会返回 40 秒的时间间隔。

[[UIApplication sharedApplication] backgroundTimeRemaining]

确实,应用程序在结束任务后至少再挂起 20 秒。

为什么会这样? 应用是否总是会收到完整的执行时间? 我可以加快应用暂停吗?

【问题讨论】:

【参考方案1】:

进一步调试后,很明显backgroundTimeRemaining 不会在任务完成后立即更新。该应用程序不久后暂停,可能是在运行循环旋转之后。您不应期望 backgroundTimeRemaining 始终准确。

【讨论】:

以上是关于长时间运行的后台任务完成后应用程序未挂起的主要内容,如果未能解决你的问题,请参考以下文章

linux系统中挂起操作和强制结束操作(后台运行程序方法)

php长时间执行挂起现象怎么解决?

iOS开发:后台运行以及保持程序在后台长时间运行

Elixir 长时间运行的后台任务未完成,有时会崩溃

在 Rails 中运行大量长时间运行的后台作业

锁屏后,前台service被挂起的一个解决方法