UIApplication Background Task Notes

Posted 20190311

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIApplication Background Task Notes相关的知识,希望对你有一定的参考价值。

原文地址:UIApplication Background Task Notes

下面是复制过来的:

The UIApplication background task mechanism allows you to prevent your app from being suspended for short periods of time. While the API involved is quite small, there’s still a bunch of things to watch out for.

The name background task is somewhat misappropriate. Specifically, beginBackgroundTask(expirationHandler:) doesn’t actually start any sort of background task, but rather it tells the system that you have started some ongoing work that you want to continue even if your app is in the background. You still have to write the code to create and manage that work. So it’s best to think of the background task API as raising a “don’t suspend me” assertion.

You must end every background task that you begin. Failure to do so will result in your app being killed by the watchdog. For this reason I recommend that you attach a name to each background task you start (by calling beginBackgroundTask(withName:expirationHandler:) rather than beginBackgroundTask(expirationHandler:)). A good name is critical for tracking down problems when things go wrong.

IMPORTANT Failing to end a background task is the number one cause of background task problems on ios. This usually involves some easy-to-overlook error in bookkeeping that results in the app begining a background task and not ending it. For example, you might have a property that stores your current background task identifier (of type UIBackgroundTaskIdentifier). If you accidentally creates a second background task and store it in that property without calling endBackgroundTask on the identifier that’s currently stored there, the app will ‘leak’ a background task, something that will get it killed by the watchdog.

Background tasks can end in one of two ways:
When your app has finished doing whatever it set out to do.

When the system calls the task’s expiry handler.

Your code is responsible for calling endBackgroundTask(_

以上是关于UIApplication Background Task Notes的主要内容,如果未能解决你的问题,请参考以下文章

spritekit无法从后台状态获取打印

iOS大神班笔记03-UIApplication

iOS-UIApplication详解

UIApplication的详细介绍

程序启动原理和UIApplication

1230ios准备 --UIApplication类