即使我的应用程序在后台运行,我也希望每隔5分钟将当前位置发送到php web服务。我尝试制作这个东西,但是当我的应用程序处于运行状态时它的工作正常,但是当我将此应用程序放在后台时,它会停止发送数据,所以请任何伙伴告诉我如何在后台运行我的应用程序。
答案 0 :(得分:8)
通过"在后台运行",你的意思是在锁定屏幕下运行吗?如果是这种情况,则需要设置PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
Jaime Rodriguez的帖子Running a Windows Phone Application under the lock screen很好地涵盖了这个主题。
但是,如果您正在谈论在用户使用设备上的其他应用程序时运行继续运行的应用程序,那么这是不可能的。在操作系统的Mango版本中,您可以创建后台代理,但这些代理仅每30分钟运行一次,仅运行15秒,如MSDN所述。
Windows Phone开发的官方UserVoice论坛上有Provide an agent to track routes的请求,但即使被采用,也会在相当长的一段时间内无法使用。
答案 1 :(得分:4)
跟踪应用程序是我为生活所做的大部分工作,使用WP7这样的前景是我获得它的主要原因。
从功耗角度来看,传输数据是您可以做的最昂贵的事情,紧接着是对GPS和加速度计进行采样。
要生成与道路紧密贴合的轨迹,您需要更高的采样率。 WP7不会让你每秒采样超过一次。这(几乎没有)足够快以跟踪机动车辆,并且在这个功耗水平下,电池将持续大约一个小时假设您在手机上记录数据并且不尝试传输它
您还会发现,如果您为每个样本进行传输,则采样间隔至少为15秒。在另一个线程上运行Web调用将无济于事,因为它将花费超过一秒钟的时间来完成,并且您将在不到一分钟的时间内用完套接字,并且间隔时间为一秒。
所有这些问题都有解决方案。例如,在机动车辆中,您可以连接到车辆电源并且运行热。您可以在后台线程中批量处理数据并将其破解。
然而,这些只是每个跟踪器设计者面临的基本问题。更有趣的是空间和时间的接近度,路线偏差的测量,如何以时间依赖的方式指定路线和地理围栏,如何将它们关联到命名集以用于规则评估目的以及如何将规则与命名集相关联的问题路线和地理围栏。然后会有定期聚类,它会引入所有对于桌面软件的普通开发人员来说过多的日历噩梦。要应用学区的速度限制,您需要知道该区域的时区,夏令时,两个开始和两个停止时间以及学校假期的开始和结束日期。
如果您只是为了娱乐或某种徒步旅行而这样做,那么五分钟的间隔将比一秒采样产生更温和的动力需求,但我仍然建议批量和爆发,因为这意味着您可以追踪没有通讯。