Windows Phone应用程序重新启动而不是恢复,尽管它出现在任务列表中

时间:2017-07-25 09:38:21

标签: c# windows-phone resume suspend

使用Windows RT控制暂停,恢复和启动Windows Phone应用程序,有3个事件: OnLaunching - > OnLaunched分别 OnSuspending OnResuming

通常,如果应用启动,则会触发OnLaunching。 当应用暂停时,例如屏幕保护程序出现,OnSuspending被解雇了。 如果我通过打开任务列表返回应用程序,则会触发OnResuming。

现在我遇到以下问题。

如果我切换到另一个应用程序或屏幕保护程序出现,OnSuspending被触发 - 这没关系。 但是如果我在大约15-20分钟之后通过任务列表返回我的应用程序,则会激活OnLaunching事件而不是OnResuming,尽管我的应用程序仍显示在任务列表中。

就像应用程序刚刚启动一样!

这是因为我在Windows 8.1 RT中重新设计了应用程序。 在我的应用程序的早期版本中,它运行在Silverlight中,这很好。每当我通过任务列表返回我的应用程序时,OnResuming就会被解雇。

做了一些测试,我发现了以下内容: 启动应用程序,可以从ActivateEventArgs中读取先前的执行状态。所以我读了它们,看看启动之前的应用程序状态。 第一次启动应用程序后,其状态为' notRunning' 。 如果我关闭应用并重新打开它,则状态为' closedByUser' 。 如果该应用程序已被暂停并且我在15-20分钟后撤销该应用程序,则状态'已终止'

然而,国家终止'意味着,窗户已经关闭了应用程序。

为什么Windows在15-20分钟后关闭了我的应用程序,为什么应用程序仍在关键任务列表中

你有什么想法,问题是什么?

1 个答案:

答案 0 :(得分:0)

微软告诉我: 操作系统可以终止应用程序以释放资源。但是这样的结果仍然可以出现在任务栏中。 如果暂停的应用程序被终止,则没有Resuming事件,而是使用Terminated的ApplicationExecutionState调用 OnLaunched()。因此,必须在 OnLaunched()中调用恢复应用程序状态的例程。

有时,需要区分应用程序是否已按任务列表或磁贴重新启动。为此,请使用 OnLaunched()中的 TileId 属性。 TileId " App" 如果应用由磁贴启动为空如果应用已被任务列表重新启动 。如果你生成eg,TileId也可以有另一个值。应用程序的第二个磁贴,为他们提供另一个ID。

但是,这在Windows 8.1中不起作用,因为TileId的值总是" App"独立于任务列表或标准磁贴启动它。