在Windows Phone应用中,我得到如下地理位置:
Geoposition geoposition = await geolocator.GetGeopositionAsync(
maximumAge: TimeSpan.FromMinutes(5),
timeout: TimeSpan.FromSeconds(10));
如果我理解这一点,则maximumAge意味着该位置可以缓存,最长可达5分钟。
我可以使用这个"内置缓存"所以当我的应用程序启动时,我使用带有maximumAge的GetGeopositionAsync(...),例如2(分钟),只是为了获得新鲜的地理位置,而不实际使用地理位置。
稍后在应用程序中,当我确实需要该位置时,我再次使用maximumAge调用GetGeopositionAsync(...),例如10分钟。现在我应该得到缓存的值(如果它仍然基于maximumAge有效)?
这有什么意义吗?如果这按预期工作,我不需要构建自己的地理位置缓存系统。
答案 0 :(得分:4)
是的,这是正确的。 MSDN博客文章(http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/30/acquiring-a-single-geoposition-in-windows-phone-8.aspx)解释了使用MaximumAge
非常好的缓存:
MaximumAge
定义了缓存Geoposition
的年龄限制, 从操作开始的时间开始,应用程序将使用它。通过 默认情况下,请求不会返回缓存的Geoposition。如果你的应用程序 可以使用缓存位置一段短暂的时间,这个参数 也可以看作有效时间跨度。该应用程序可以简化它 让Geolocator
处理缓存的逻辑。例如,如果应用将
MaximumAge
设置为5分钟,则为Geolocator 可以使用长度为5的Geoposition
来满足该请求 从请求开始的几分钟,只要该位置 符合应用程序指定的准确度要求。请注意,
Geolocator
将始终采用以下顺序 满足请求的步骤:
请求已开始。
确定缓存的
Geoposition
是否满足年龄和所需的准确度,如果是,请立即返回。根据所需的准确度触发定位技术。
当符合所需的准确度时,请返回
Geoposition
。- 醇>
达到超时后,如果尚无可用的位置,则输出错误。如果有一个可用的位置,给定该框架 遵循尽力而为模型,此
Geoposition
具有较低的准确性 比应用程序所希望的可以在此时返回。该应用程序可以 决定信息是否有用或丢弃信息。