Windows phone 7 如何在后台更新Windows Phone中的位置数据?

Windows phone 7 如何在后台更新Windows Phone中的位置数据?,windows-phone-7,location,background-process,background-agents,Windows Phone 7,Location,Background Process,Background Agents,我刚刚读到,虽然Windows Phone 7.5后台任务可以轮询位置,但它们实际上并不从GPS实时轮询,而是位置API调用返回一个系统缓存位置,该位置仅每十五分钟更新一次 当然,这种限制使任何在后台运行导航的尝试完全无效,因为您可以在15分钟内偏离轨道,更不用说后台任务只能每30分钟左右运行一次 这就是说,诺基亚的导航应用程序和据称的Runtastic应用程序在后台(即不只是在锁屏下)都会继续跟踪,而且都在市场上,这意味着它们已经被批准,那么有人知道他们是如何做到SDK不支持的事情的吗 作为参

我刚刚读到,虽然Windows Phone 7.5后台任务可以轮询位置,但它们实际上并不从GPS实时轮询,而是位置API调用返回一个系统缓存位置,该位置仅每十五分钟更新一次

当然,这种限制使任何在后台运行导航的尝试完全无效,因为您可以在15分钟内偏离轨道,更不用说后台任务只能每30分钟左右运行一次

这就是说,诺基亚的导航应用程序和据称的Runtastic应用程序在后台(即不只是在锁屏下)都会继续跟踪,而且都在市场上,这意味着它们已经被批准,那么有人知道他们是如何做到SDK不支持的事情的吗


作为参考,我们实际上不需要实时跟踪。。。也许一分钟一次左右,我们不需要那么精确。。。大概100英尺左右。。。但我们确实需要比我们得到的更多的东西。我们只是不知道他们在已批准的应用程序中是如何执行的。

只有当PeriodicTask大约每~30分钟执行一次时,您才能检索位置,具体取决于操作系统的调度。它从GeoCoordinateWatcher获取的位置数据将来自操作系统的缓存,而不是直接来自GPS硬件。如果没有任何东西在运行,操作系统将大约每15分钟用粗粒度数据更新一次。但是,如果应用程序已执行并检索了细粒度GPS硬件数据,则这将是您将在PeriodicTask中检索的数据。您可以通过访问前台应用程序中的GPS并使用ScheduledActionService.LaunchForTest强制安排PeriodicTask来查看此示例。

您只能在PeriodicTask大约每~30分钟执行一次时检索位置,具体取决于操作系统的计划。它从GeoCoordinateWatcher获取的位置数据将来自操作系统的缓存,而不是直接来自GPS硬件。如果没有任何东西在运行,操作系统将大约每15分钟用粗粒度数据更新一次。但是,如果应用程序已执行并检索了细粒度GPS硬件数据,则这将是您将在PeriodicTask中检索的数据。您可以通过在前台应用程序中访问GPS并使用ScheduledActionService.LaunchForTest强制安排您的PeriodicTask来查看此示例。

根据我在后台任务方面的经验,您将无法通过定期或资源密集型后台任务实现您想要的目标

尽管有文档声称它们每30分钟运行一次,但我的经验是,它们偶尔运行,而且不可预测。在过去的14个小时里,我的应用程序的周期性任务总共运行了6次,而且每天都非常稳定——大约每两个小时运行一次。对于资源密集型任务,我发现它们通常每晚运行两次。我想操作系统必须平衡手机上的所有进程,以及所有其他应用程序都在叫嚣着运行它们的后台任务,所以有时候你的应用程序并不能胜任。显然,在我的情况下,您的里程可能会因您的手机lumia 800和您安装的应用程序而异


如果你想写一个每分钟跟踪一次你的位置的应用程序,我的建议是让它在锁定屏幕下运行,并确保它有一个低内存占用以节省电池寿命

根据我在后台任务方面的经验,无论是周期性的还是资源密集型的后台任务,你都无法达到你想要的效果

尽管有文档声称它们每30分钟运行一次,但我的经验是,它们偶尔运行,而且不可预测。在过去的14个小时里,我的应用程序的周期性任务总共运行了6次,而且每天都非常稳定——大约每两个小时运行一次。对于资源密集型任务,我发现它们通常每晚运行两次。我想操作系统必须平衡手机上的所有进程,以及所有其他应用程序都在叫嚣着运行它们的后台任务,所以有时候你的应用程序并不能胜任。显然,在我的情况下,您的里程可能会因您的手机lumia 800和您安装的应用程序而异


如果你想写一个每分钟跟踪一次你的位置的应用程序,我的建议是让它在锁定屏幕下运行,并确保它有一个低内存占用以节省电池寿命

是的,它很烂,但它有很好的记录。Maby WP8将有一个解决方案。在屏幕锁定下运行应用程序并关闭IdleDetection。德里克。。。这太疯狂了,因为那样会耗尽电池。此外,这也要求我们的应用程序位于前台,这在某种程度上违背了后台任务的目的。是的,@Rich是有文档记录的,但是诺基亚有一个导航应用程序可以做到这一点,而且它们不像第一方ala那样的宽频直播瓷砖。如果微软给了我们

如果我能接触到这一点,那将非常非常糟糕,特别是因为诺基亚和微软都在抱怨他们需要更多的应用程序,然后阻碍了我们创建它们的能力。简直疯了。另外,诺基亚的GPS应用程序很臭。没错,现在很多GPS应用程序都是这样做的。可能是重复的是的,它很烂,但它有很好的记录。Maby WP8将有一个解决方案。在屏幕锁定下运行应用程序并关闭IdleDetection。德里克。。。这太疯狂了,因为那样会耗尽电池。此外,这也要求我们的应用程序位于前台,这在某种程度上违背了后台任务的目的。是的,@Rich是有文档记录的,但是诺基亚有一个导航应用程序可以做到这一点,而且它们不像第一方ala那样的宽频直播瓷砖。如果微软给了他们独家访问权限,那将非常非常糟糕,特别是因为诺基亚和微软都在抱怨他们需要更多的应用程序,这将阻碍我们创建应用程序的能力。简直疯了。另外,诺基亚的GPS应用程序很臭。没错,现在很多GPS应用程序都是这样做的。这基本上就是我之前提到的。您刚刚添加了关于另一个应用程序更新缓存的内容,但这不是重点,因为我的后台任务仍然只访问缓存数据。实际上,你可以使用繁重的后台任务,它可以每十分钟运行一次。但是,这仍然不能回答这个问题,如果它可以做或不。当然可以,因为诺基亚有一个nav应用程序,它们不是第一方ala宽现场互动程序,但话说回来,也许它们拥有独家访问权限,我们其他人不必感谢他们的MS合作伙伴关系,这将是一个遗憾。我想,繁重的背景任务是指资源密集型任务?如果是这样的话,我看不到他们能每10分钟跑一次,而是能跑10分钟。然而,考虑到其他限制,他们必须有电源、WiFi、>90%电池和屏幕锁。我怀疑它对你有用。长话短说:您直接提出的问题在标准SDK中似乎不可能实现。您可能需要查看interop Ref:但是…使用interop需要设备被互操作解锁。有传言称,一些市场上的应用程序被发现带有本机代码和互操作代码Ref:但是,您的应用程序是否会被允许使用此类代码进入市场?你在赌博。这听起来像是认证时需要技术豁免的事情。有关认证/豁免的详细信息:啊@先生,你说得对!我看错了直到,而不是每一个。是的,我把名字弄错了。我真的不知道,如果他们每30分钟只更新一次,微软怎么能称他们为“实时互动程序”,而且是的,当你在应用程序中时,你可以随心所欲地更新他们,这就违背了目的,因为你已经有了一个该死的全屏,所以你不需要互动程序!我是说忘了GPS。。。我们甚至连一个简单的钟面都不会写!我对MS和这个完全荒谬的限制非常非常失望。认真考虑归还新的Lumia 900。再说一次,是的!查看诺基亚的GPS应用程序!它做到了。显然,一款名为Runtastic的应用程序也是如此,而Runkeeper则不然。问题是怎么做。如果微软没有向我们提供这些,那么,他们又怎么能抱怨他们的平台没有足够的支持呢?这基本上就是我所说的。您刚刚添加了关于另一个应用程序更新缓存的内容,但这不是重点,因为我的后台任务仍然只访问缓存数据。实际上,你可以使用繁重的后台任务,它可以每十分钟运行一次。但是,这仍然不能回答这个问题,如果它可以做或不。当然可以,因为诺基亚有一个nav应用程序,它们不是第一方ala宽现场互动程序,但话说回来,也许它们拥有独家访问权限,我们其他人不必感谢他们的MS合作伙伴关系,这将是一个遗憾。我想,繁重的背景任务是指资源密集型任务?如果是这样的话,我看不到他们能每10分钟跑一次,而是能跑10分钟。然而,考虑到其他限制,他们必须有电源、WiFi、>90%电池和屏幕锁。我怀疑它对你有用。长话短说:您直接提出的问题在标准SDK中似乎不可能实现。您可能需要查看interop Ref:但是…使用interop需要设备被互操作解锁。有传言称,一些市场上的应用程序被发现带有本机代码和互操作代码Ref:但是,您的应用程序是否会被允许使用此类代码进入市场?你在赌博。这听起来像是认证时需要技术豁免的事情。有关认证/豁免的详细信息:啊@先生,你说得对!我看错了直到,而不是每一个。是的,我把名字弄错了。我真的不知道如果他们每30分钟更新一次,微软怎么能称他们为“活瓷砖”,
是的,当你在应用程序中的时候,你可以随心所欲地更新它们,这就违背了你的目的,因为那时你已经有了一个该死的全屏,所以你不需要瓷砖!我是说忘了GPS。。。我们甚至连一个简单的钟面都不会写!我对MS和这个完全荒谬的限制非常非常失望。认真考虑归还新的Lumia 900。再说一次,是的!查看诺基亚的GPS应用程序!它做到了。显然,一款名为Runtastic的应用程序也是如此,而Runkeeper则不然。问题是怎么做。如果微软没有提供给我们,那么他们又怎么能抱怨他们的平台没有足够的支持呢。