停用后执行 Windows Phone 8.1 应用程序
Posted
技术标签:
【中文标题】停用后执行 Windows Phone 8.1 应用程序【英文标题】:Execute a Windows Phone 8.1 Application after deactivation 【发布时间】:2014-06-15 23:41:57 【问题描述】:我了解 Windows Phone 8.1 应用程序生命周期:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff817008%28v=vs.105%29.aspx
但是,是否可以在不使用时(停用后)保持应用程序处于活动状态?
是否可以实现一个 WP8.1 应用程序以预定的时间间隔向服务器发送一些数据?停用后是否可以在 App 中执行代码?
【问题讨论】:
我不是 Windows Phone 专家,但这对我来说似乎是一个合理的问题。如果有人能详细说明为什么它被否决,它可能会有所帮助(对 OP 和其他人)。 【参考方案1】:看来你需要PeriodicTask
Periodic agents run for a small amount of time on a regular recurring interval. Typical scenarios for this type of task include uploading the device’s location and performing small amounts of data synchronization.
来源:Backgrounds agents for Windows Phone 8
【讨论】:
感谢乔治的回答。我读过这篇文章,PeriodicTask 似乎是我需要的,但有很大的限制。 PeriodicTask 每 10 分钟执行不超过 1 次。在我的应用程序中,我需要后台代理来更新设备的位置,但我认为更频繁地执行此操作很有用。是否可以更频繁地执行后台代码? 你确定吗?正如您在this 示例中所见,您可以每分钟运行一次代理。 (至少在调试模式下) ScheduledActionService.LaunchForTest() 只允许在调试模式下(不幸的是)每分钟运行一次代理,但我在最终版本中也需要此功能。 你能把你的资源发给我吗? 10 分钟的限制?【参考方案2】:除了Silverlight apps, there are also Universal/Runtime apps,您已经为 WP8.1 标记了您的问题。值得一提的是,在 Windows Phone 8.1 运行时应用程序中,app lifecycle 略有不同。
任何方式,当您的应用程序被暂停、停用、墓碑或进入未运行状态,它正在停止。并且它不可能在后台工作(使用官方 API,除了音频播放器、GPS 跟踪应用程序和其他专门设计的模型)。 diffrenet 案例也是在锁定屏幕下运行的应用程序(有可能,但这不是您所要求的)。当您离开您的应用程序时,会引发Suspending event 或(WP Silverlight 中的Deactivated) - 另请注意,您在这些事件上保存应用程序状态的时间非常有限。
除了BackgroundAgents,还有其他在后台工作的方法,从Windows Phone 8.1(Silverlight 和Runtime)开始,您可以使用BackgroundTasks。它们可以被触发(例如TimeTrigger、MaintanceTrigger),具体取决于它们的Registration - 在时间间隔内和/或special conditions。
Here is a vary good article,你也可以找到一些信息at this article。
【讨论】:
感谢 Romasz 的回答。关于后台任务,我发现我可以像每 15 分钟一样频繁地运行任务。正如我向乔治解释的那样,我需要更频繁地更新设备的位置。据您所知,有什么方法可以做到吗? @top_broker 在 Windows Phone 内置计时器的工作间隔为 30 分钟(在 Windows 上为 15 分钟)。所以这样你就不会低于那个时间。 AFAIK 没有办法更快地运行任务,但是 - 有些类型的应用程序允许在后台连续运行 - AudioAgent、位置跟踪应用程序。所以如果你想更新设备的位置 - check MSDN 我需要持续跟踪设备的位置并将这些数据发送到服务器。这可能吗,使用地理定位器?方法 geolocator_StatusChanged() 可以在 App 被停用的情况下运行还是可以作为后台任务执行?如果是,如何? (这是我真正需要知道的:)) @top_broker 我已经尝试过了。在 WP8.0 when the App tracked location actively 下,应用程序被允许在后台运行长达 4 小时(有一些其他限制)。但我不确定它现在在 WP8.1 中是如何工作的 - 你必须检查它。另请注意,在后台运行时存在一些 API 限制。 是我一直在寻找的。谢谢罗马兹。以上是关于停用后执行 Windows Phone 8.1 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Windows Phone 8.1 中的 BackButtonPressed 问题?
StoreTest 工具包 Windows Phone 8.1
Return to viewmodel 禁用可执行命令 (Caliburn Micro - Windows Phone 8.1)