使用 begin​Background​Task​With​Expiration​Handler​ 进行上传

2023-12-31

来自doc https://developer.apple.com/reference/uikit/uiapplication/1623031-beginbackgroundtaskwithexpiratio看起来上传文件是一个很好的用例begin​Background​Task​With​Expiration​Handler​。我发现使用

let uploadTask = session.uploadTask(with: request as URLRequest, fromFile: file)
uploadTask.resume()

当应用程序处于后台时已经运行(我收到上传进度 ping 一段时间)。另外,我可以将 URLSession 设置为后台:

let config = URLSessionConfiguration.background(withIdentifier: "uploads")
session = URLSession(configuration: config, delegate: self, delegateQueue: nil)

那么使用有什么好处begin​Background​Task​With​Expiration​Handler?它会延长我完成上传的时间吗?如果是这样,我能知道多少(在文档中没有看到任何有关此内容的内容)吗?或者只是我会在应用程序停止之前收到 ping 通知?我应该将它与后台 URLSession 结合使用吗?

此外,文档还说处理程序将在应用程序的剩余后台时间达到 0 之前不久调用这是否意味着此后该应用程序将被终止?即我可以假设下一个电话将是application:didFinishLaunchingWithOptions或者可以是applicationDidBecomeActive ?


此后台任务将使您的应用程序在用户离开您的应用程序额外 3 分钟左右后继续在后台运行(检查background​Time​Remaining实际值)让您的请求完成。是的,在这 3 分钟即将结束时,如果您尚未结束后台任务,则会调用超时处理程序。

因此,如果您在应用程序的正常流程期间结束后台任务,则不需要调用此超时关闭。此关闭仅适用于任何快速的最后一刻清理,您可能需要在应用程序停止在后台运行之前执行此操作,因为在您有机会指示后台任务结束之前它已超时。这不是为了开始任何新的事情,而是为了最后一秒的清理工作。并确保在此超时处理程序中结束后台任务...如果您不结束后台任务,操作系统将立即终止您的应用程序,而不是仅仅暂停它。通常,在此超时关闭中您唯一需要做的就是结束后台任务,但如果您需要执行任何其他清理操作,则可以在此处执行此操作。

不用说,你must结束后台任务(当网络请求完成时,或者在超时处理程序中,如果您的应用程序尚未有机会在正常流程中结束后台任务)。如果不这样做,您的应用程序不仅会被暂停,还会被杀死。

关于假设用户稍后重新启动应用程序时会发生什么,您无法假设将调用哪个应用程序委托方法。即使您优雅地结束了后台任务,您也无法保证它不会因其他原因(例如内存压力)而被放弃。所以不要假设任何事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 begin​Background​Task​With​Expiration​Handler​ 进行上传 的相关文章

  • 如何在 Flutter 中对 RaisingButton 的颜色进行动画处理?

    我有一个RaisedButton 我想要animate它的颜色来自green to red 反之亦然 每次用户单击它时 这怎么能做到呢 您可以使用AnimatedContainer https api flutter dev flutter
  • 别名在 Bash 脚本中不起作用[重复]

    这个问题在这里已经有答案了 我有一个可执行文件command sh bin bash alias my command echo ok my command 我的终端是bash 当我像这样运行时 command sh 效果很好 当我像这样运
  • 蓝牙 LE 中步数计数的服务和特性是什么?

    低功耗蓝牙中步数的服务 特征值 UUID 是什么 蓝牙文档的相应页面没有列出任何步骤 如何计算步数 计步设备是否使用跑步速度和步频服务 谢谢 有些设备确实使用跑步速度和节奏服务 您应该能够通过将 总距离 除以 瞬时步长 两者都可以在RSC测
  • 检查一个数是否是完全平方数?

    我认为以下代码存在精度问题 bool isPerfectSquare long long n long long squareRootN long long sqrt n 0 5 return squareRootN squareRootN
  • 强制函数调用的顺序?

    假设我有一个抽象基类 并且我想要一个必须由派生类实现的纯虚方法 但我想确保派生方法以特定顺序调用函数 我可以做什么来强制执行它 I E base class virtual void doABC 0 virtual void A 0 vir
  • 从 Ruby 运行 shell 命令:在显示输出时捕获输出?

    我有个问题 我想从另一个 ruby 脚本运行一个 ruby 脚本并捕获它的输出信息 同时让它也输出到屏幕上 runner usr bin env ruby print Enter your password password gets ch
  • Spring 的 LdapTemplate 搜索:PartialResultException:未处理的延续引用;剩余名称 '/'

    我通过 LDAP 为某个使用 spring 制作的应用程序添加用户 虽然这适用于大多数情况 但在某些情况下 它不起作用 检索我使用的用户 public class LdapUserServiceImpl implements ILdapUs
  • JAAS keytab 配置的相对路径

    我有一个系统 其中 NET 客户端使用 Kerberos 针对 Java 服务器进行身份验证 一切正常 但我正在尝试改进服务器配置 目前一个keytab根目录中需要文件C 因为我的jaas配置文件看起来像这样 Server com sun
  • Elastic Beanstalk、Bundler 找不到 gem“bundler”的兼容版本

    我已经尝试过将 Elastic Beanstalk 用于 Rails 当我运行 eb deploy 时出现此错误 我需要至少安装bundler 1 8 4 知道如何解决这个问题吗 Bundler could not find compati
  • 如何测试send_file烧瓶

    我有一个小型烧瓶应用程序 它需要上传一些图像并将它们转换为多页 tiff 没什么特别的 但是如何测试多个文件的上传和文件下载呢 我的测试客户端 class RestTestCase unittest TestCase def setUp s
  • CMake 中的 FindSDL2 发生了什么?

    我在游戏中使用 SDL2 我一直使用自定义 FindSDL2 cmake 因为标准 CMake 集中没有 然而 前段时间确实出现了有关 FindSDL2 的帖子 例子 红迪网帖子 https www reddit com r opengl
  • 捕获 SQLAlchemy 异常

    我可以使用什么捕获 SQLAlechmy 异常的上层异常 gt gt gt from sqlalchemy import exc gt gt gt dir exc ArgumentError CircularDependencyError
  • 从外部material-ui组件访问主题

    我有一个使用标准深色主题的主题提供商 我希望能够从我自己的自定义组件访问该主题的详细信息 但我不知道如何做到这一点 在下面的例子中 this props theme未定义 ReactDOM render
  • Pandas:如何删除以 nan 作为列名的多个列?

    根据标题 这是一个可重现的示例 raw data x this that this that this np nan np nan np nan np nan np nan np nan y np nan np nan np nan np
  • 如何在不显示父活动的情况下将一个全屏对话框片段替换为另一个全屏对话框片段?

    我有一个使用单个自定义 DialogFragment 类的活动 它的外观是数据驱动的 因此不同的调用看起来可能相当不同 它是 全屏 即 setStyle DialogFragment STYLE NO FRAME android R sty
  • Google Analytics PHP(发送信息)

    大意 我正在开发一个项目 我需要使用 Google Analytics 服务器端 我不需要检索信息 但我需要发送信息 我最终可以发送 js 脚本客户端 但在这种情况下它不是一个选项 以下大多数链接都非常旧 2012年 检索 不是我需要的 我
  • Apache Flink - “keyBy”中的异常处理

    由于代码错误或缺乏验证 进入 Flink 作业的数据可能会触发异常 我的目标是提供一致的异常处理方式 我们的团队可以在 Flink 作业中使用这种方式 而不会导致生产中出现任何停机 重启策略似乎不适用于此处 因为 简单的重启无法解决问题 我
  • 在哪里放置资源特定逻辑

    您能帮我考虑在 AngularJS 中将资源 服务 特定的业务逻辑放置在哪里吗 我觉得在我的资源上创建一些类似模型的抽象应该很棒 但我不确定如何做 API调用 gt GET customers 1 lt first name John la
  • 创建进程默认浏览器

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 我想获取线程 id 因此 ShellExecute 无法获取线程 id 因此我开始使用
  • 如何循环遍历颜色数组以更改按键背景(按下/向下)

    互联网 如果这与其他人没有什么关系 请原谅我 但我会将其留在这里 以防这是一个有效的问题 我正在尝试创建一个文本区域字段 其中用户每次按下键 a z 都会触发背景颜色更改 在数组中列出 我一直在用 JQuery 做这件事 我想我已经很接近了

随机推荐

  • 在elasticbeanstalk中设置NODE_ENV变量

    我创建了一个名为 elasticbeanstalk environment config其中包含以下内容 option settings option name NODE ENV value development 我还将 process
  • 具有多个可选参数的 Spring Data MongoDB AND/OR 查询

    我正在尝试执行具有两个以上可选参数的查询 但没有得到任何结果 对于2个参数我遵循了这个问题的答案spring data mongo 可选查询参数 https stackoverflow com questions 11613464 spri
  • 带有断路器的 Kafka Consumer,使用 Resilience4j 重试模式

    我需要一些帮助来了解如何使用 Spring boot Kafka Resilence4J 提出解决方案 以实现来自 Kafka Consumer 的微服务调用 假设如果微服务关闭 那么我需要使用断路器模式通知我的 Kafka 消费者停止获取
  • 使用 Solr 配置 Tika

    我正在寻找将丰富类型文档 Pdf Doc rtf txt 索引到 Solr 中 我找到了 Tika 作为解决方案 我在网上咆哮 但没有找到任何文档 链接来使其与 ExtractingRequestHandler 一起使用 任何人都可以提供通
  • 为什么对原型的编辑不起作用?

    我想向函数构造函数 类 的原型添加一个常量 但它返回为未定义 为什么 function myClass document ready function myClass prototype age 22 window alert myClas
  • 当在 QTableWidget 中拖动一行时,如何找出它被拖动的行索引 FROM 和 TO?

    我试图保持一些数组数据与 QTableWidget 的内容同步 我想启用拖放重新排序 在表中移动项目 而不是复制 但我不清楚当触发放置事件时 我如何找出该项目是从哪个索引拖动的 因此 我无法知道要在正在同步的列表中移动哪个对象 如何获取被拖
  • Android sqlite更新行

    我试图更新表中的一行 但更新功能似乎没有响应 我的功能一切正常 还是我哪里出了问题 public int editChild int id String name String dob int gender double weight do
  • 缩小的 js 文件中的变量名称重复

    我最近在产品部署中遇到了问题 这是一个 net 项目 问题是我的一个 js 文件中有一行代码 for const work in worklist 部署后 该js文件被缩小 代码更改为 for n in n 我通过将 const 更改为 v
  • 为什么我无法在 Solaris 10 上构建加载 Socket.so 的 Perl 模块?

    我正在尝试构建 Convert ASN1 模块 但在此过程中出现错误 我在 Solaris 10 上使用 Perl 5 12 0 perl Makefile PL运行没有问题 同样的make 但是 进行测试 会引发此错误 IMO 中最关键的
  • Primeng 按钮不显示标签

    我的 angular4 应用程序中有 primeng 按钮 按钮的标签未显示 按钮显示很小 没有标签 div div
  • 仅使用 WebRTC 发送报价

    我想创建类似聊天轮盘赌的东西 有两个同龄人 两个对等方都向信令服务器发送 SDP Offer 要求其与某人建立连接 信令服务器使用对等点 A 的提议将其作为答复发送给对等点 B 反之亦然 两个对等方都可以在不使用 createAnswer
  • jQuery、ajax 和 jsonp 的问题

    我正在使用 jsonp 和 ajax 访问另一台服务器上的 Web 服务 这是 jQuery ajax type GET url wsurl callback dataType jsonp crossDomain true error fu
  • 一个类全部都是静态方法有什么问题吗?

    我正在进行代码审查 发现一个使用所有静态方法的类 入口方法接受多个参数 然后开始调用其他静态方法 传递入口方法接收到的全部或部分参数 它不像具有很大程度上不相关的实用函数的数学类 在我自己的正常编程中 我很少编写 Resharper 弹出并
  • iText 横向方向和定位?

    我刚刚开始使用 iText 5 4 2 最新版本 有两件事我还没有搞清楚 创建横向文档 所有页面均以纵向呈现 在给定位置插入图像 距顶部和左侧的毫米数 我有下面的代码 Document d new Document PageSize A4
  • Jetpack Compose LazyColumn 项目在 StickyHeader 上滚动,但不会滚动到最后一项

    我正在努力使用 jetpack compose LazyColumn 和 StickyHeader 功能 基本上静态视图效果很好 但是一旦我开始滚动 这些项目就会越过粘性标题 滚动会开始一种奇怪的行为 并且最后一个项目将永远不可见 因为滚动
  • 微服务的数据库设计[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想了解微服务的数据库设计 下面给出了场景 微服务A使用mysql数据库 如果我要创建微服务 A 的多个实例 每个微服务A应该指向同一个数据
  • 如何在 SQL Profiler 或任何其他工具中监视事务隔离级别更改

    我成功地只能看到transaction isolation level事件在Audit Login事件 还有其他方法可以监控吗transaction isolation level使用 SQL Profiler 或其他工具进行更改 我问的原
  • 可以在 IE 上运行的图表库吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 气流:未设置 SQLALCHEMY_DATABASE_URI 和 SQLALCHEMY_BINDS

    我已经在本地 Mac 上设置了 Airflow 2 0 并由 PostgresSQL 支持 sql alchemy conn 我的 DAG 运行良好 在 sqla 数据库中维护元数据 但任何气流用户命令错误 且未创建角色表 视图 我已尝试设
  • 使用 begin​Background​Task​With​Expiration​Handler​ 进行上传

    来自doc https developer apple com reference uikit uiapplication 1623031 beginbackgroundtaskwithexpiratio看起来上传文件是一个很好的用例beg