【问题标题】:How can I know which tasks are running in the background?我如何知道哪些任务正在后台运行?
【发布时间】:2014-05-26 19:04:25
【问题描述】:

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

请看下图。橙色框是我似乎找不到任何答案的问题点。

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

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

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

【问题讨论】:

  • 正如所写,你的问题太模糊了。你是说在后台线程上运行,使用 NSThread、NSOperations 或 GCD 队列吗?还是说当用户将您的应用切换到后台时询问后台时间?
  • 我希望操作系统继续上传文件,即使应用程序已关闭或发送到后台。
  • 见 Rob 的回答。你想要 NSURLSession。即使您的应用在后台,它也可以让您处理上传/下载。

标签: ios cocoa-touch uibackgroundtask


【解决方案1】:

您使用的是NSURLConnection 还是NSURLSession

如果NSURLSession,则可以使用getTasksWithCompletionHandler。你也可以使用背景NSURLSessionConfiguration,而不是依赖beginBackgroundTaskWithExpirationHandler。并且它跟踪请求的条款,您可以从任务中检索 originalRequest(并从中检索 URL),或者使用 taskIdentifier 更新您的模型以获取 NSURLSessionTask,并在您的自己的模型那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多