【发布时间】:2013-03-27 19:23:01
【问题描述】:
我目前正在开发一个应用程序,该应用程序应将设备的位置发送到服务器。我已经在后台代理上通过the MSDN articles 工作并访问了该位置。到目前为止,这有效。当我触发了一个比设置的 MovementThreshold 更远的位置变化时,我的位置就会传输到服务器。
但是,我了解到后台代理的测试可能很复杂。如果您使用模拟器,您可以很容易地经常更改设备的位置。但是在真机上,定位后台服务的空闲运行时间被限制在 30 分钟内,而命令的执行最多只需要 25 秒。用户也可以从电话的设置屏幕禁用后台代理。当代理连续崩溃两次以上时,它们也会被停用。另一个限制是inactive background agents are stopped after 4 hours,如果they don't update an apps live tile。
我的应用更新了实时磁贴计数器,因此我认为我的后台代理应该可以运行长达 14 天而无需从我的应用重新启动。我从昨天到今天测试了该应用程序,并看到后台代理正在运行(从设置中查找时)。在上面的栏中还有一个可见的小点,表明程序正在访问手机的地理位置。但是,有时圆点会消失,我的后台代理会无缘无故地被杀死。
因此我的问题是:
- 如何在真实设备上可靠地测试地理位置,而无需携带手机和连接的调试笔记本电脑出差?
- 如何及时测试我提到的超时场景(30 分钟、4 小时、14 天)?
- 如何检查后台代理的这两次崩溃?
【问题讨论】:
-
“我的应用程序更新了一个实时磁贴计数器,所以我认为我的后台代理应该运行长达 14 天而无需从我的应用程序重新启动”这在 WP7 上是正确的。在 WP8 上,只要磁贴固定在用户的主屏幕上,您的后台代理就不会过期(如果未固定,则适用 14 天规则)
-
你能给我这个信息的来源吗?这意味着如果我不固定应用程序的磁贴,所有后台代理可以在 WP8 上不间断地运行长达 14 天?
-
并非没有中断,我只是在谈论到期日期。 “每 30 分钟运行 25 秒”规则仍然适用于 WP8。另外,我的说法只是部分正确:msdn.microsoft.com/en-us/library/windowsphone/develop/…
If the Tile for your app is pinned to the phone’s Start screen, the expiration time for your background agent schedule is automatically extended to two weeks whenever your background agent calls Update(ShellTileData) to update the Tile所以你需要明确更新磁贴以推迟到期日期。 -
好的,我正在根据 MovementTreshold 的间隔更新它,然后检查最后一次更新是否至少在 2 小时前。所以理论上我已经超出了这个 30 分钟的限制。但是您正在链接到定期任务。是不是比 WP8 特定的后台定位服务更适合定位?
标签: geolocation gps windows-phone-8 background-process background-agents