我必须开发一种GPS导航应用程序,需要不断跟踪用户的位置,这是用汽车移动。 具体而言,我不必在地图上显示当前位置,而只是以最佳精度记录其位置,以便计算行进的总距离。
当然,如果用户切换到另一个应用程序,拨打电话或类似的东西,应用程序需要继续在后台工作......
从我所做的测试和我从useful post(以及documentation)学到的知识,在我看来,在这种情况下最好的选择是标准位置服务,应用程序在.plist文件中配置了 UIBackgroundModes = location 。 通过这种方式,它将继续接收位置更新,即使在后台也不会被OS暂停(只有在调用了[locationManager startUpdatingLocation]时才会这样)。 this guys也证实了这一点。 我个人已经通过使用Instruments和Memory监视器模块运行应用程序来验证这是真的,在那里你可以看到有关应用程序状态的各种标志,首先将应用程序置于后台,UIBackgroundModes设置为location并且startUpdatingLocation处于活动状态,之后没有它
重要提示:如果您的,则不会调用applicationWillTerminate:方法 应用目前暂停。
但是因为在我的情况下它将永远不会被暂停(它将保留在后台但不会被暂停),我的逻辑结论是applicationWillTerminate将始终被调用,因此我可以注册一个重要的位置更新或区域监视方法,以便被唤醒,然后重新启动标准位置服务。 applicationWillTerminate是放置此代码的正确位置吗?
2)在后台工作但未暂停的应用程序可以由操作系统终止,除非内存条件非常低或我的应用程序没有正确响应内存警告? (用户也可以手动关闭它)。我担心如果不以某种方式调用applicationWillTerminate。
3)由于电池快速耗尽,苹果公司是否可以批准在后台经常使用标准位置服务的应用? 你有没有批准类似应用程序的问题?
答案 0 :(得分:0)
因为你问的很多问题你不应该在这里做,所以我只给你一些问题。
如果应用程序终止,则您无法再重新启动它。
这通常是用户终止应用程序时的情况
不要担心Apple(ios)不会终止您的应用程序。你的应用程序不会占用太多内存,具有巨大位图图形的游戏更有可能是终结。
evry gps应用程序会耗尽蝙蝠。这不是没有理由的理由。
暂停意味着应用程序未处于后台模式,正处于休眠状态。你不会收到Gps,因此没有必要在终止时给你打电话。您必须先保存数据,请参阅有关背景模式和应用程序生命周期的Apple文档。