使用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分钟后关闭了我的应用程序,为什么应用程序仍在关键任务列表中?
你有什么想法,问题是什么?
答案 0 :(得分:0)
微软告诉我: 操作系统可以终止应用程序以释放资源。但是这样的结果仍然可以出现在任务栏中。 如果暂停的应用程序被终止,则没有Resuming事件,而是使用Terminated的ApplicationExecutionState调用 OnLaunched()。因此,必须在 OnLaunched()中调用恢复应用程序状态的例程。
有时,需要区分应用程序是否已按任务列表或磁贴重新启动。为此,请使用 OnLaunched()中的 TileId 属性。 TileId 是" App" 如果应用由磁贴启动且为空如果应用已被任务列表重新启动 。如果你生成eg,TileId也可以有另一个值。应用程序的第二个磁贴,为他们提供另一个ID。
但是,这在Windows 8.1中不起作用,因为TileId的值总是" App"独立于任务列表或标准磁贴启动它。