gpt4 book ai didi

ios - 应用重启后监控 NSURLSession

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:32 27 4
gpt4 key购买 nike

我有一个监视下载任务的原型(prototype)单 View 应用程序。

enter image description here

我正在尝试处理以下用例:

  1. 当应用程序处于前台时,通过 NSURLSession 启动下载。 NSURLSession 是使用后台配置创建的。
  2. 我使用“Xcode Stop”终止了该应用程序,以便该应用程序继续在后台下载。当应用程序处于事件状态时,我按顺序接收来自 NSURLSession 的进度回调。
  3. 我在下载尚未完成时手动启动应用程序(不是通过 Xcode,而是点击启动图标)。
  4. 我没有收到任何 URLSession 委托(delegate)调用在前一个应用程序生命周期中启动的任务。唯一被调用的是 handleEventsForBackgroundURLSession,但它是由操作系统在 AppDelegate 上调用的(不同于 NSURLSession 委托(delegate)调用的情况)。

我想显示正在进行的下载任务的进度。这可以在应用重新启动后完成(当应用被系统终止,而不是手动终止时!)?

在应用程序重新启动后,NSURLSession 被初始化为相同的标识符,新的委托(delegate)对象,所以我认为委托(delegate)将继续接收 session 任务的调用(因为 session 标识符是相同的),但显然情况并非如此。Apple的文档中有一个注释:

The session object keeps a strong reference to the delegate until your app explicitly invalidates the session. If you do not invalidate the session, your app leaks memory.

但我想这只适用于应用程序处于事件状态的情况。当应用程序终止时,所有应用程序的对象都会消失。

最佳答案

确保 NSURLSession 在应用程序启动时正确初始化。这就是我的问题所在。我有 TransferManager,它将 session 初始化为未被调用的惰性 getter...

现在 NSURLSession 已正确初始化,回调会定期触发。

愚蠢的错误,但确实如此。

关于ios - 应用重启后监控 NSURLSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35938047/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com