ApplicationIdleDetectionMode和DispatcherTimer

时间:2011-04-26 13:59:30

标签: windows-phone-7 timer

我正在研究一个我无法解决的问题......

我开发了一个WP7应用程序,它会定期向服务发送位置更新。因此我使用的DispatcherTimer效果很好。现在我也希望在屏幕锁定时执行此操作。所以我在InitializePhoneApplication()之后的App()中将ApplicationIdleDetectionMode设置为“Disabled”。

现在我有一个非常奇怪的行为,因为当屏幕被锁定时运行的计时器似乎已经完成,但我无法再次启动它。调用timer.Start()但不调用Tick-Event。当我在我的设备上解锁屏幕时,它再次正常工作......

任何人都知道如何解决这个问题? 或者也许任何其他建议我如何能够实现这样的行为?

问候 多米尼克

1 个答案:

答案 0 :(得分:0)

我很惊讶框架本身会在ApplicationIdleDetection被禁用时锁定应用程序时停止活动计时器,尽管这是一个明显的可能性。在RunKeeper中,我们不会使用DispatcherTimer来执行此操作,我们会使用Observable.Timer跟踪用户在活动上的时间。

无论如何,我要建议的是,每次间隔发送位置数据可能不是最有效的。如果您在位置服务上设置移动阈值​​,那么只有当用户的位置更改了该位置时才会获得位置,然后您可以在每次位置更改时发送位置数据。为了在设备锁定时保持电池电量,您可以存储位置,然后在重新激活应用程序时发送它们。