【发布时间】:2015-07-14 07:11:33
【问题描述】:
我有一个使用位置服务的应用。当应用程序在前台以及在后台时,它将向服务器发送位置数据。
系统会不会因为大量使用定位服务而强制我的应用程序终止?还是我的测试人员注意到位置数据中的“差距”是由于 GPS/互联网信号不佳?
【问题讨论】:
标签: ios location core-location cllocationmanager background-process
我有一个使用位置服务的应用。当应用程序在前台以及在后台时,它将向服务器发送位置数据。
系统会不会因为大量使用定位服务而强制我的应用程序终止?还是我的测试人员注意到位置数据中的“差距”是由于 GPS/互联网信号不佳?
【问题讨论】:
标签: ios location core-location cllocationmanager background-process
根据App Programming Guide for iOS:
在应用程序终止部分(已添加重点),
应用程序必须随时准备终止,不应等待保存用户数据或执行其他关键任务。系统启动的终止是应用程序生命周期的正常部分。系统通常会终止应用程序,以便它可以回收内存并为用户启动的其他应用程序腾出空间,但系统也可能会终止行为不端或未及时响应事件的应用程序。
Apple 没有定义“行为不端”,但在后台状态下非常频繁地发出网络或 GPS 定位请求根本不是一个好公民。您可以通过订阅精度较低的位置更改来降低这些更新的频率。 (Apple 强烈推荐重大变化的定位服务。)
除非精确和连续的位置数据对您的应用至关重要(例如导航应用可能就是这种情况),否则您应该尽量限制在后台状态下使用位置服务。
来自同一指南的Background Execution section,
需要在后台运行以支持特定类型任务的应用可以声明其支持一种或多种后台执行模式。
因此,如果您碰巧需要尽可能准确地更新位置,并且您正确声明支持该后台模式,那么系统可能会更能容忍任何频繁的后台任务执行、资源占用或其他“不当行为”。但是,声明对后台模式的支持并不能免除您的应用程序尝试最小化其资源使用量的尝试;你还是应该努力做一个好公民。
为了回答您的问题,
【讨论】: