首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是Xcode“后台处理”后台模式?

什么是Xcode“后台处理”后台模式?
EN

Stack Overflow用户
提问于 2019-07-25 16:52:39
回答 3查看 23.4K关注 0票数 41

在Xcode 11中,有一个新的后台模式,“后台处理”。我找不到任何关于这个新的背景模式的信息。

有没有包含这些信息的资源?

这种模式会以某种方式影响在后台使用位置更新(区域监控和SLC)的应用程序吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-25 22:49:08

目前还没有文档。但在WWDC2019中,他们解释了它是什么以及如何使用它。链接如下:

Apple WWDC 2019

假设你想在后台清理数据库以删除旧记录。首先,您必须启用后台

处理中

在您的

背景模式

功能。然后在你的

添加后台任务调度器标识:

然后在'ApplicationDidFinishLaunchingWithOptions‘方法中,向任务注册你的标识符。

代码语言:javascript
运行
复制
BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.example.apple-samplecode.ColorFeed.db_cleaning", using: nil) { task in
    // Downcast the parameter to a processing task as this identifier is used for a processing request
    self.handleDatabaseCleaning(task: task as! BGProcessingTask)
}

执行您希望在后台执行的工作,并将其放入操作队列中。在我们的例子中,清理函数将如下所示:

代码语言:javascript
运行
复制
// Delete feed entries older than one day...
func handleDatabaseCleaning(task: BGProcessingTask) {
    let queue = OperationQueue()
    queue.maxConcurrentOperationCount = 1

    // Do work to setup the task
    let context = PersistentContainer.shared.newBackgroundContext()
    let predicate = NSPredicate(format: "timestamp < %@", NSDate(timeIntervalSinceNow: -24 * 60 * 60))
    let cleanDatabaseOperation = DeleteFeedEntriesOperation(context: context, predicate: predicate)

    task.expirationHandler = {
        // After all operations are canceled, the completion block is called to complete the task
        queue.cancelAllOperations()
    }

    cleanDatabaseOperation.completionBlock {
        // Perform the task
    }

    // Add the task to the queue
    queue.addOperation(cleanDatabaseOperation)
}

现在,当应用程序进入后台时,我们必须在

..。

注意:

是一项新功能,用于调度将在后台执行的多个后台任务]。

这个后台任务将每周执行一次来清理我的数据库。查看可用于定义任务类型的属性。

票数 47
EN

Stack Overflow用户

发布于 2020-05-21 15:50:18

运行BGTaskScheduler任务需要后台处理模式。

BGTaskScheduler

一个用于调度任务的类,通过提交在后台启动应用程序的任务请求来运行。为后台任务配置应用程序为后台任务配置应用程序,方法是添加所需后台模式的能力,并添加任务标识符的白名单。

为后台任务配置应用程序

通过添加所需后台模式的功能和添加任务标识符的白名单,为应用程序配置后台任务。

票数 4
EN

Stack Overflow用户

发布于 2021-02-27 01:22:24

应用程序状态

代码语言:javascript
运行
复制
foreground -> background -> suspended -> terminated

-当app处于后台模式时执行一些任务

要添加在后台模式下工作的功能,请执行以下操作

代码语言:javascript
运行
复制
App Target -> Signing & Capabilities -> + Capability -> Background Modes

您可以找到模式列表,如下所示:

音频-后台录制/播放音频

位置-在后台模式下接收新的位置更新

后台任务

后台获取-后台应用程序刷新任务-在加载应用程序之前获取最新数据的时间为30秒。

后台处理任务-在系统友好的时间(例如,在应用程序成为后台之后)几分钟来完成大任务(清除视频内容)或优先任务(发送消息)

[后台会话]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57197958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档