具有两种可用的 onActivated 侦听器的 UWP c# 应用程序 - 通过通知激活
Posted
技术标签:
【中文标题】具有两种可用的 onActivated 侦听器的 UWP c# 应用程序 - 通过通知激活【英文标题】:UWP c# app with two kinds of onActivated listeners available - Activation by notification 【发布时间】:2016-10-05 04:18:49 【问题描述】:目前在我的应用程序中,我正在注册一个 onActivated 侦听器以执行并检查我的共享活动,如下所示:
Window.Current.Activated += Current_Activated;
使用以下方法检查激活状态:
private async void Current_Activated(object sender, Windows.UI.Core.WindowActivatedEventArgs e)
if (e.WindowActivationState == CoreWindowActivationState.Deactivated)
else
现在我想从后台任务的通知中实现激活。单击通知当前正在打开应用程序,如果已经打开,则将其置于前台。这是标准行为。现在我想通过通知在激活时执行一些代码,但我的方法从未被调用,而且我并不完全理解微软的在线资料,因为它看起来相对简单。
我正在注册监听器:
(Application.Current as App).Activated = new EventHandler<IActivatedEventArgs>(App_Activated);
永远不会被调用的方法是这样的:
private void App_Activated(object sender, IActivatedEventArgs e)
这两者有冲突吗?我可以做些什么来在我现有的方法中实现通知激活吗?
我已经阅读了这个页面和更多页面:https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/07/08/quickstart-sending-a-local-toast-notification-and-handling-activations-from-it-windows-10/
即使从我下载的测试应用程序中,我也并不真正了解需要做什么。除此之外,我不需要将通知中的任何信息传递给主要活动。只需打开它并执行一个刷新页面的命令,但仅限于通知激活。
【问题讨论】:
【参考方案1】:您应该只覆盖App.xaml.cs
中的OnActivated(IActivatedEventArgs args)
方法并检查args.Kind
属性是否为ActivationKind.ToastNotification
。
您可以找到有关处理 UWP 应用激活here 的更多信息。
【讨论】:
啊啊啊。就是这样。我不知道我必须在 app.xaml.cs 中覆盖它。我尝试在我的应用程序主页中覆盖它。谢谢【参考方案2】:正如玛丽安所说,您需要在 App.xaml.cs
类中覆盖 OnActivated
方法。 OnActivated
方法在你的 toast 被点击时被调用,它包含 toast 参数,这样你就知道点击了什么 toast。请注意,您必须在 OnActivated 中执行与 OnLaunched 相同的 Frame 初始化,因为如果用户在您的应用关闭时单击 toast,则只会调用 OnActivated 方法 - OnLaunched 获胜'不会被调用。
本快速入门准确解释了如何处理 toast 激活,并包含完整的代码示例:Quickstart: Sending a local Toast notification
【讨论】:
以上是关于具有两种可用的 onActivated 侦听器的 UWP c# 应用程序 - 通过通知激活的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server Always on Clustering,无法创建侦听器