当后台服务取消暂停或重新启动时,iOS 应用程序需要多长时间?

Posted

技术标签:

【中文标题】当后台服务取消暂停或重新启动时,iOS 应用程序需要多长时间?【英文标题】:How much time is an iOS app given when unsuspended or relaunched by a background service? 【发布时间】:2011-03-26 19:05:58 【问题描述】:

我有一个基于位置的 ios 4 应用程序,该应用程序在后台依赖于显着的位置变化监控。 Apple 的文档状态:

在唤醒时间,您的应用程序正在 放入后台并给出一个 少量的时间来处理 位置数据。因为你的 应用程序在后台,它 应该做最少的工作并避免任何 任务(例如查询网络) 这可能会阻止它返回 在分配的时间到期之前。

有人知道“一小段时间”有多长吗?具体来说,我想知道我是否有足够的时间在位置管理器上调用startUpdatingLocation 以获得比初始位置事件可能提供的更准确的修复。 (我的后台位置事件几乎总是将它们的horizontalAccuracy 报告为 1000m。)

如果 Apple 的“少量时间”不足以达到此目的,我是否可以从后台应用程序调用 beginBackgroundTaskWithExpirationHandler: 以请求更多时间?我知道这通常会给你额外的 600s,这绰绰有余。

【问题讨论】:

【参考方案1】:

您是否绝对需要在应用程序重新启动期间找到更准确的修复程序,或者您是否可以在您的应用程序移至前台后执行此繁重的工作,并在工作时显示“正在加载...”类型的屏幕发生?这将消除对超时的任何担忧。

【讨论】:

在唤醒/重新启动时,我试图确定用户是否在某些预定义位置的范围内。如果不是,它应该回到睡眠状态,直到它接收到另一个位置事件。基于区域的监控会更符合逻辑,但这本质上是一款新颖的应用程序,我不希望永远在线监控的电池电量不足。

以上是关于当后台服务取消暂停或重新启动时,iOS 应用程序需要多长时间?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 当应用程序在后台时取消蓝牙连接

当应用程序进入暂停状态时取消本地通知。(从后台删除)

在启动时在iOS中启动位置感知后台服务

iOS - 以固定间隔自动更新数据的后台传输服务

Android 警报管理器在重新启动设备或从后台杀死应用程序后取消

在 ios8 中使用 appdelegate 暂停 spritekit 游戏