0

这是场景,我在我的应用程序中添加了今天的扩展目标。在我的小部件 ViewController 中,它通过核心位置框架监听位置变化。此外,在我的包含应用程序中有位置变化监听器。我知道有一个回调来获取最新位置。

optional func locationManager(_ manager: CLLocationManager!,
       didUpdateLocations locations: [AnyObject]!)

但是,我想知道的是,当我的包含应用程序和小部件都在运行时(听起来很奇怪,假设包含应用程序在后台运行),并且它们都在使用 CLLocationManager 监听位置更改,是否调用了 locationManager:didUpdateLocations: 方法同时获得相同的位置数据或其他东西?(我知道小部件和应用程序提前在单独的进程中运行)提前谢谢。:-]

4

2 回答 2

1

我同意汤姆哈灵顿的观点,即无法保证。

事实上,我可能会更进一步说,对于许多更新模式,您不太可能同时在同一位置获得更新。

例如,如果您将扩展程序和应用程序都设置为使用不同的distanceFilterordesiredAccuracy值,那么它们将获得不同的更新是合乎逻辑的。

即使它们对两个键具有相同的值,如果它们在不同的时间和不同的位置启动,它们也可能在不同的时间超过阈值(并因此接收更新)。

现在,iOS 可能会通过同时向两个进程发送更新来优化事物。但我当然不会依赖它。

于 2015-01-04T23:08:21.900 回答
0

无法保证更新会同时发生。可能它们碰巧同时出现,但这不能保证是真的,所以你不能依赖它。

假设手机的移动速度不是太快,它们可能会到达相同的位置,但这些更新交付给应用程序的时间可能会略有不同。

于 2015-01-04T22:56:50.707 回答