的Windows Phone应用程序重新启动,而不是简历,虽然它会出现在任务列表

问题描述:

控制暂停,恢复和启动与Windows RT的Windows Phone应用程序,有3个事件: OnLaunching - > OnLaunched分别 OnSuspending OnResuming的Windows Phone应用程序重新启动,而不是简历,虽然它会出现在任务列表

一般来说,如果一个应用程序启动,OnLaunching被解雇。 当应用程序暂停时屏幕保护程序出现,OnSuspending被解雇。 如果我通过打开任务列表返回到应用程序,则会启动OnResuming。

现在我有以下问题。

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

这就像应用程序是新开始的!

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

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

但是,状态'已终止'表示窗口已关闭应用程序。

为什么窗户在15-20分钟后已关闭我的应用程序为什么如果应用程序已关闭,它仍在任务列表中

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

微软告诉我: 操作系统可以终止一个应用程序,以释放资源。但是这样的情况仍然会出现在任务栏中。 如果已终止的应用程序已终止,则不会发生恢复事件,而是使用终止的ApplicationExecutionState调用OnLaunched()而不是。因此,必须在OnLaunched()内调用恢复应用程序状态的例程。

有时需要区分应用是否已由tasklist或tile重新启动。为此,请使用OnLaunched()中的TileId属性。 TileId“应用程序”,如果应用程序已经通过瓷砖开始,它是,如果应用程序已经通过任务列表重新启动。 TileId也可以有另一个值,如果你生成例如。第二块应用程序给他们另一个ID。

但是,这在Windows 8.1中不起作用,因为TileId的值始终是“应用程序”,与任务列表或标准磁贴启动它无关。