我怎么知道哪些任务在后台运行?

时间:2014-05-26 19:04:26

标签: ios cocoa-touch uibackgroundtask

我正在尝试在我的应用中实现一个看似常见的功能:在后台上传文件。我通过调用-[UIApplication beginBackgroundTaskWithExpirationHandler:]来运行此类任务,因此这些任务均由UIBackgroundTaskIdentifier标识。

请看下面的图表。橙色框是问题点,我似乎无法找到任何答案。

enter image description here

以下是我寻求指导的问题:

是否可以获取在上一个会话中启动的相同应用的正在运行的任务列表?

是否可以将某种元数据(例如URL字符串)与后台任务相关联,以便我们知道哪个任务正在上传哪个文件?

1 个答案:

答案 0 :(得分:3)

您使用的是NSURLConnection还是NSURLSession

如果NSURLSession,您可以使用getTasksWithCompletionHandler。您也可以使用背景NSURLSessionConfiguration,而不是依赖beginBackgroundTaskWithExpirationHandler。对于跟踪请求的条款,您可以从任务中检索originalRequest(并从中检索网址),或使用taskIdentifierNSURLSessionTask更新模型,并以这种方式在您自己的模型中交叉引用请求。