[英]How to add Multiple AppBar/CommandBar's in xaml page itself in windows phone 8.1 runtime app?
[英]Page and App events behavior in Windows Phone 8.1 Runtime
我无法管理应用程序的生命周期,因为我不确定与页面/应用程序生命周期相关的事件和功能何时运行。 如果Microsoft在某个地方将它们全部制表,那将是很好的。 具体来说,以下是我认为和不知道的以下每个事件/功能的行为:
Page.Page()
(构造函数):首次创建页面时运行。 不确定它是在应用程序运行时仅运行一次,还是每次在单个会话中导航至该页面时都运行。
Page.OnNavigatedTo()
:创建页面时以及每次导航到页面时运行。
Page.OnNavigatedFrom()
:在用户离开页面时运行。 当用户在显示页面时按“开始”按钮或“锁定”屏幕按钮时不运行。
App.App()
(构造函数):启动应用程序时仅运行一次。
App.Resuming
:在最小化/挂起应用程序后将其显示在视图中,或者当用户解锁屏幕并显示在应用程序中时触发。 首次启动该应用程序时不运行。
App.Suspending
:当用户按下主页上的“后退”按钮(即不再显示该应用程序)以及按下“开始”按钮时触发。
我有什么想念的地方吗? 我要确保的原因是我的应用程序有一个页面,该页面运行背景音频播放器,而该页面又需要精心管理的事件订阅/取消订阅系统,并且如果我在该页面上按下“开始”按钮,它的行为通常会很尴尬。 另一个问题是我在App.xaml.cs中有一个静态对象,该对象正在整个应用程序中使用,并暴露了一些事件。 现在,我正在订阅/取消订阅每个页面上的事件,如下所示:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
App.globalObject.Event1 += Event1_handler;
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
App.globalObject.Event1 -= Event1_handler;
}
但是我不确定这是否是正确的方法(显然,我试图确保只预订一次事件,以避免事件处理程序多次运行)。 我应该只在页面的构造函数中订阅一次该事件吗?
编辑:我正在使用包含SuspensionManager
和NavigationHelper
类的项目模板,以防万一。
您的代码和逻辑对我来说似乎还可以,但是正如igrali在注释中所建议的那样,您始终可以在订阅前“清除”处理程序。 这有点hacky,但可以完成工作
protected override void OnNavigatedTo(NavigationEventArgs e)
{
App.globalObject.Event1 -= Event1_handler;
App.globalObject.Event1 += Event1_handler;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.