首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让应用在后台运行更长时间

如何让应用在后台运行更长时间
EN

Stack Overflow用户
提问于 2016-03-22 06:42:29
回答 3查看 1.9K关注 0票数 4

我有一个Swift程序,它根据特定条件获取用户位置,并将位置保存到本地数据库。

应用程序也可以在后台状态下运行。因为我需要得到一个非常准确的位置,所以可能需要60秒才能得到位置。如果在不到5秒内确定位置,则当应用程序在后台运行时,一切工作正常。如果获取位置的时间超过5秒,则不会发生任何事情。我认为原因是因为您只有几秒钟的时间来完成后台任务。

那么,是否可以请求长达60秒的时间来运行后台任务?我是否需要添加任何特殊代码来告诉操作系统请留出更多时间(最多60秒)来完成后台任务?

EN

回答 3

Stack Overflow用户

发布于 2016-03-22 08:40:32

是。

使用UIApplication函数beginBackgroundTaskWithExpirationHandler:。在最近的iOS版本中,它给你3分钟的时间来完成你正在做的任何事情。有关更多信息,请参阅Xcode文档。

票数 2
EN

Stack Overflow用户

发布于 2016-03-22 11:46:22

你可以使用'beginBackgroundTaskWithExpirationHandler‘

示例代码可以是这样的:

代码语言:javascript
复制
var backgroundTask: UIBackgroundTaskIdentifier = UIBackgroundTaskInvalid

    func registerBackgroundTask() {
  backgroundTask = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler {
    [unowned self] in
    self.endBackgroundTask()
  }
  assert(backgroundTask != UIBackgroundTaskInvalid)
}

func endBackgroundTask() {
  NSLog("Background task ended.")
  UIApplication.sharedApplication().endBackgroundTask(backgroundTask)
  backgroundTask = UIBackgroundTaskInvalid
}

有关这方面的更多信息,可以在关于后台模式的教程中找到:Raywenderlich:Background modes - Swift

Apple Doc: Background Modes

票数 0
EN

Stack Overflow用户

发布于 2016-03-22 12:57:31

在后台运行应用程序并始终打开的最好方法是保持启用xcode it self提供的后台模式

请参阅:https://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial

还要在应用程序的info.plist中设置布尔值“应用程序不在后台运行”

希望这能有所帮助

谢谢

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

https://stackoverflow.com/questions/36143003

复制
相关文章

相似问题

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