使用 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​ 进行上传 的相关文章

  • 如何在发布期间复制未版本化的测试资源:执行?

    我的问题与 Maven 在发布时不会复制未跟踪的资源 https stackoverflow com questions 10378708 maven doesnt copy untracked resources while releas
  • CFdump cfcomponent cfscript

    可以在 cfcomponent 中使用 cfdump 吗 可以在 cfscript 中使用 cfdump 吗 我知道 anser 不是 那么如何发出 insde cfcomponent 函数的值 cf脚本 我用的是CF8 可以在 cfcom
  • TIFF 元数据的最大大小是多少?

    TIFF 文件元数据的单个字段中可以合并的元数据数量是否有最大限制 我想在 ImageDescription 字段中存储大文本 最多几 MB 没有具体的最大限制ImageDescription但是 整个 TIFF 文件存在最大文件大小 该最
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • Redis如何存储关联数组?设置、散列还是列表?

    我对 Redis 的所有可用存储选项有点困惑 我想做一些简单的事情 并且不想过度设计它 我正在与phpredis and Redis v2 8 6 我有一个需要存储的简单关联数组 我还需要能够通过其键检索项目并循环遍历所有项目 a arra
  • PHPUnit 和 Zend Framework assertRedirectTo() 问题

    我在创建的测试中遇到了 assertRedirectTo 问题 下面是我使用的代码 public function testLoggedInIndexAction this gt dispatch this gt assertControl
  • 从超立方体图像中获取文本的确切位置

    使用 tesseract 中的 GetHOCRText 0 方法 我能够检索 html 中的文本 并在 webview 中呈现 html 时 我能够获取文本 但图像中文本的位置与输出不同 任何想法都非常有帮助 tesseract gt Se
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev
  • CSS溢出文本显示在几行中,没有断字

    我有一些长文本显示在 div 中 该 div 具有固定的宽度和高度 我希望文本显示在几行上 作为 div 高度 并且句子单词不会中断 一行中的单词前缀和下一行中的继续 此外 我想在末尾添加省略号最后一句话 CSS white space n
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j
  • 循环内的异步性

    我正在使用 jQuery getJSON 用于从一组实用程序的给定 URL 检索数据的 API 我真的很想找到一种为每个实用程序重用代码 完全相同 的方法 由于循环的执行与 ajax 调用无关 因此我无法找到保留循环值的方法 我知道这个描述
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50
  • 在 Nexus 7 2013 上更改方向时 CSS 媒体查询不起作用

    我目前正在我的笔记本电脑 台式电脑和 Nexus 7 2013 上测试 CSS 媒体查询 除了 Nexus 7 之外 它们在台式机和笔记本电脑上都运行良好 当我更改方向时 除非刷新页面 否则样式不会应用 例如 以纵向模式握住设备时 页面正常

随机推荐

  • 在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