我的应用在后台运行时使用区域监控。一旦应用程序进入后台,我就会获取他们的位置(我已经在前台拥有)并在其周围创建一个区域并开始监视该区域。
我正在使用可可伐木工进行日志记录,并且在 applicationDidFinishLaunchingWithOptions 内部设置了日志记录,一旦我这样做了,我就会记录“开始记录...”。通常,我希望仅在应用程序第一次打开时看到这一点,或者如果由于某种原因应用程序崩溃并且我必须重新启动它并查看日志以确定原因。今天在开车时进行测试,我注意到在 5 小时内我的文件中有 15 个“开始记录”实例,总是在我创建区域后几分钟,就像这样(我删除了位置特定信息):
- 晚上 7:17:创建区域:regionFor:[xxx,-xxx],半径:200
- 晚上 7 点 25 分:开始记录......
(在这里我做了几个快速的位置更新,看看它们是否移动并向服务器发送请求,这大约需要 1 秒,然后创建另一个区域来监控......)
- 晚上 7:25:创建区域:regionFor:[xxx,-xxx],半径:200
- 晚上 7 点 44 分:开始记录......
(在这里我做了几个快速的位置更新,看看它们是否移动并向服务器发送请求,这大约需要 1 秒,然后创建另一个区域来监控......)
- 晚上 7:44:创建区域:regionFor:[42.77846,-71.42591],半径:100
- 晚上 8 点 04 分:开始记录......
在我删除与位置更新相关的日志和我认为不相关的服务器请求之间有一些日志......我只是想知道为什么在这些点调用了应用程序DidFinishLaunching,因为我只在应用程序时看到它被调用在被用户强行终止,手机本身重新启动或应用程序崩溃后第一次启动,而不是从后台唤醒,这是我从我读过的内容中对区域监控的期望。这是预期的行为还是我的应用程序崩溃然后以某种方式被操作系统重新启动?
需要注意的一件事是,我可能会开始执行后台任务来处理位置更新并发送请求,因为我确信有时位置更新可能需要一点时间,而请求也可能需要一段时间,所以我需要超过大约 10 秒的时间来处理 didExitRegion 更新,但这似乎与我看到的这种看似奇怪的行为无关。任何帮助将不胜感激。